【问题标题】:Website Treating me as mobile when scraping from html in python从 python 中的 html 抓取时,网站将我视为移动设备
【发布时间】:2015-04-02 06:06:41
【问题描述】:

我正在尝试使用 urllib2 和 beautifulsoup 的组合从网站上抓取数据。目前,这是我的代码:

site2='http://football.fantasysports.yahoo.com/archive/nfl/2008/619811/draftresults'
players=[]
teams=[]
response=urllib2.urlopen(site2)
html=response.read()
soup=BeautifulSoup(html)
playername = soup.find_all('a', class_="name")
teamname = soup.find_all('td', class_="last")

我的问题是,当我在 Chrome 中查看源代码时,这些标签随时可用并且可以正常工作,但是当我尝试运行该程序时,这些标签不再存在。

一个提示可能是源代码的第一行如下所示: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 而如果我打印我的汤或 html 对象,第一行是<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">。 当我尝试使用 urllib2 抓取它时,该 url 似乎以移动形式出现。如果这不是这个意思,或者你确实知道如何让 urllib2 像浏览器(最好是 chrome)那样打开 url,请告诉我!还请具体说明我如何解决问题,因为我是一名新手编码员,诚然我的知识深度充其量是浅薄的!

谢谢大家!

【问题讨论】:

    标签: python-2.7 beautifulsoup urllib2


    【解决方案1】:

    网站试图找出来自“用户代理”的请求来源的浏览器。根据 urllib2 docs,默认的 user-agent 是 Python-urllib/2.6。您可以尝试使用 OpenerDirector 将其设置为浏览器的设置。同样,来自文档:

    import urllib2
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    opener.open('http://www.example.com/')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多