【发布时间】:2017-09-20 08:30:50
【问题描述】:
我想提取网站上的一些信息,但是 urllib 提取的信息与我浏览器中显示的网站不同。
generic_link_seq = "http://yeastmine.yeastgenome.org/yeastmine/sequenceExporter.do?object=1016810"
sauce = urllib.request.urlopen(generic_link_seq).read()
soup = bs.BeautifulSoup(sauce,"lxml")
text = soup.get_text().replace("\n", "")
print(text)
网站的真正内容开头是:
S000006360 atgaacagacaggaatccataaattcgtttaattcagacgaaacatcttcgttgtctgat gtagaaagtcagcagccgcaacaatatcccttcagagagtggatctaaatccaacatg gctcctaatcaactgaagttgacccggacggaaaccgtgaagtcattgcaggac...
python给我的输出开头是:
YeastMine: HomejQuery && jQuery(function() { if (typeof intermine !== 'undefined' && intermine.options) { intermine.options.CDN.server = "http://yeastmine.yeastgenome.org/CDN/"; }});搜索检索S. cerevisiae 数据与 YeastMine,由 SGD 填充并由 InterMine 提供支持。数据更新日期:2017 年 2 月 6 日主页模板列表查询生成器工具...
【问题讨论】:
-
问题可能出在身份验证/验证过程中。我无法重现您的错误,也许我没有查看您链接的网站的适当权限。请记住,urllib 默认将
User-Agent设置为Python-urllib/X.X,这可能会导致服务器向您发送不同的响应,因为您被视为未经身份验证的用户,可能是机器人。请尝试使用curl获得正确的响应,然后在 python 中发出正确的请求 -
我尝试了不同的用户代理字符串,但没有帮助,所以我不确定这是问题所在。这是我运行的代码: import urllib2 headers = { 'User-Agent' : 'Mozilla/5.0' } req = urllib2.Request('yeastmine.yeastgenome.org/yeastmine/…', None, headers) html = urllib2.urlopen(req).read () 打印(html)
-
您可能会被重定向。这是浏览器可以处理的事情,而您当前的代码却不能。
-
我已经尝试了这里描述的每一件事,但仍然没有用,但谢谢大家 =)
标签: python beautifulsoup web urllib