【问题标题】:Urllib reads wrong websiteUrllib 读取错误的网站
【发布时间】: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


【解决方案1】:

试试requests.Session(你需要先获取一些cookies)

import requests
from bs4 import BeautifulSoup

generic_link_seq = "http://yeastmine.yeastgenome.org/yeastmine/sequenceExporter.do?object=1016810"
ses = requests.Session()
ses.get(generic_link_seq).text
sauce = ses.get(generic_link_seq).text
soup = BeautifulSoup(sauce,"lxml")
text = soup.get_text().replace("\n", "")
print(text)

结果:

>S000006360atgaacagacaggaatccataaattcgtttaattcagacgaaacatcttcgttgtctgat gtagaaagtcagcagccgcaacaatatatcccttcagagagtggatctaaatccaacatg gctcctaatcaactgaagttgacccggacggaaaccgtgaagtcattgcaggac...

【讨论】:

  • 就是这样!谢谢!!
猜你喜欢
  • 2017-08-27
  • 2016-02-13
  • 1970-01-01
  • 2017-02-24
  • 2020-04-13
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
相关资源
最近更新 更多