安装mechanize之后,我似乎无法导入它.
我尝试从pip,easy_install和via python setup.py install
这个repo安装:https://github.com/abielr/mechanize.所有这一切都无济于事,因为每次我输入我的Python互动时,我得到:
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>>
Run Code Online (Sandbox Code Playgroud)
我之前运行的安装报告说它们已经成功完成,所以我希望导入能够正常工作.可能导致此错误的原因是什么?
我正在尝试从特定目录导入模块.
问题是,如果我使用sys.path.append(mod_directory)
附加路径然后打开python解释器,该目录mod_directory
将添加到列表sys.path的末尾.如果我PYTHONPATH
在打开python解释器之前导出变量,则该目录将添加到列表的开头.在后一种情况下,我可以导入模块,但在前者,我不能.
有人可以解释为什么会这样,并给我一个解决方案mod_directory
,在 python脚本中添加到开头?
我正在尝试使用Python登录网站并从几个网页收集信息,我收到以下错误:
Run Code Online (Sandbox Code Playgroud)Traceback (most recent call last): File "extract_test.py", line 43, in <module> response=br.open(v) File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 203, in open return self._mech_open(url, data, timeout=timeout) File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 255, in _mech_open raise response mechanize._response.httperror_seek_wrapper: HTTP Error 429: Unknown Response Code
我用time.sleep()
它并且它有效,但它似乎不聪明和不可靠,有没有其他方法来躲避这个错误?
这是我的代码:
import mechanize
import cookielib
import re
first=("example.com/page1")
second=("example.com/page2")
third=("example.com/page3")
fourth=("example.com/page4")
## I have seven URL's I want to open
urls_list=[first,second,third,fourth]
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# …
Run Code Online (Sandbox Code Playgroud) 好的,我需要使用Python下载一些网页,并快速调查我的选项.
包含在Python中:
urllib - 在我看来,我应该使用urllib2代替.urllib没有cookie支持,只有HTTP/FTP /本地文件(没有SSL)
urllib2 - 完整的HTTP/FTP客户端,支持最需要的东西,如cookie,不支持所有HTTP动词(只有GET和POST,没有TRACE等)
功能齐全:
机械化 - 可以使用/保存Firefox/IE cookie,采取跟随第二个链接的行动,积极维护(2011年3月发布0.2.5)
PycURL - 支持curl所做的一切(FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP),坏消息:自2008年9月9日起未更新(7.19.0)
新的可能性:
urllib3 - 支持连接重用/池和文件发布
不推荐使用(也就是使用urllib/urllib2):
httplib - 仅限HTTP/HTTPS(无FTP)
httplib2 - 仅限HTTP/HTTPS(无FTP)
让我印象深刻的第一件事是urllib/urllib2/PycURL/mechanize都是非常成熟的解决方案,效果很好.机械化和PycURL附带了许多Linux发行版(例如Fedora 13)和BSD,所以安装通常不是问题(所以这很好).
urllib2看起来不错,但我想知道为什么PycURL和机械化看起来都非常受欢迎,是否有一些我缺少的东西(即如果我使用urllib2,我会在某个角落将自己画到一个角落?).我真的很喜欢这些事情的优点/缺点的反馈,所以我可以为自己做出最好的选择.
编辑:在urllib2中添加了关于动词支持的注释
有办法解决以下问题吗?
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
Run Code Online (Sandbox Code Playgroud)
是唯一的方法来联系网站所有者(barnesandnoble.com)..我正在建立一个网站,将带来更多的销售,不知道为什么他们会拒绝在一定深度访问.
我在Python2.6上使用了mechanize和BeautifulSoup.
希望能够解决问题
python screen-scraping mechanize beautifulsoup http-status-code-403
我安装了Ruby和Mechanize.在我看来,Nokogiri可以做我想做的事,但我不知道该怎么做.
那怎么样table
?它只是vBulletin论坛网站HTML的一部分.我试图保留HTML结构,但删除了一些文本和标记属性.我想获得每个帖子的一些细节:标题,作者,日期,时间,回复和视图.
请注意HTML文档中的表格很少?我正在追寻一张特别的桌子tbody
,<tbody id="threadbits_forum_251">
.名称将始终相同(我希望).我可以在代码中使用tbody
和name
吗?
<table >
<tbody>
<tr> <!-- table header --> </tr>
</tbody>
<!-- show threads -->
<tbody id="threadbits_forum_251">
<tr>
<td></td>
<td></td>
<td>
<div>
<a href="showthread.php?t=230708" >Vb4 Gold Released</a>
</div>
<div>
<span><a>Paul M</a></span>
</div>
</td>
<td>
06 Jan 2010 <span class="time">23:35</span><br />
by <a href="member.php?find=lastposter&t=230708">shane943</a>
</div>
</td>
<td><a href="#">24</a></td>
<td>1,320</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud) 我试图机械化从页面中选择一个表单,但有问题的表单在html中没有"name"属性.我该怎么办?当我尝试使用
br.select_form(name = "")
Run Code Online (Sandbox Code Playgroud)
我得到的错误是没有使用该名称声明表单,并且该函数需要输入名称.页面上只有一个表单,是否有其他方式可以选择该表单?
我有一个用python编写的机械化脚本,它填写了一个Web表单,并且应该点击"创建"按钮.但是有一个问题,表单有两个按钮.一个用于"添加附件",另一个用于"创建".两者都是"提交"类型,附加按钮是列出的第一个.因此,当我选择论坛并执行br.submit()时,它会点击"附加"按钮而不是"创建".广泛的谷歌搜索对于选择表单中的特定按钮没有任何帮助.有没有人知道跳过第一个"提交"按钮并点击第二个的任何方法?
我正在连接到一个网站,登录.
该网站将我重定向到新页面,Mechanize处理所有cookie和重定向作业,但是,我无法获得最后一页.我使用Firebug并再次做同样的工作,看到还有两页我必须通过Mechanize传递.
我快速浏览了一下页面,看到有一些JavaScript和HTML代码,但无法理解,因为它看起来不像普通的页面代码.那些页面是什么?他们如何重定向到其他页面?我该怎么做才能通过这些?
我想从网站上获取一些数据.然而,它回报了我incomplete read
.我想要获取的数据是一组庞大的嵌套链接.我在网上进行了一些研究,发现这可能是由于服务器错误(在达到预期大小之前完成了一个分块传输编码).我还在此链接上找到了上面的解决方法
但是,我不确定如何在我的情况下使用它.以下是我正在处理的代码
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;Trident/5.0)')]
urls = "http://shop.o2.co.uk/mobile_phones/Pay_Monthly/smartphone/all_brands"
page = urllib2.urlopen(urls).read()
soup = BeautifulSoup(page)
links = soup.findAll('img',url=True)
for tag in links:
name = tag['alt']
tag['url'] = urlparse.urljoin(urls, tag['url'])
r = br.open(tag['url'])
page_child = br.response().read()
soup_child = BeautifulSoup(page_child)
contracts = [tag_c['value']for tag_c in soup_child.findAll('input', {"name": "tariff-duration"})]
data_usage = [tag_c['value']for tag_c in soup_child.findAll('input', {"name": "allowance"})]
print contracts
print data_usage
Run Code Online (Sandbox Code Playgroud)
请帮帮我.谢谢
mechanize ×10
python ×8
html ×3
ruby ×2
forms ×1
html-table ×1
http ×1
javascript ×1
nokogiri ×1
pycurl ×1
python-2.7 ×1
pythonpath ×1
urllib2 ×1
web-scraping ×1