BeautifulSoup没有返回来源

时间:2013-06-04 00:54:38

标签: web-scraping beautifulsoup urllib2

我正在尝试从http://www.footywire.com/afl/footy/ft_match_statistics?mid=5634下载表格数据 但是当我尝试从BeautifulSoup获取汤时会遇到问题

我正在尝试

URL = 'http://www.footywire.com/afl/footy/ft_match_statistics?mid=5634'

汤= BeautifulSoup(URL)

但只是取回标题,或者根本没有。

我也尝试使用不同的不同解析器(html5lib),并且还通过urllib2读取页面,但仍然没有得到页面的任何部分。我在网络互动方面毫无用处,所以也许我缺少一些基本的东西,但它似乎适用于其他网站。

在提取这些数据时,我们非常感谢任何帮助。为什么我没有得到预期的来源?

1 个答案:

答案 0 :(得分:0)

澳洲同胞你好:)

如果我是你,我会使用请求和lxml。我认为该网站正在检查cookie和一些标题。请求的会话类存储cookie,也允许您传递标题。 lxml会让你在这里使用xpath,我觉得它不会比BeautifulSoup的界面痛苦。

见下文:

>>> import lxml.html
>>> import requests
>>> session = requests.session()
>>> response = session.get("http://www.footywire.com/afl/footy/ft_match_statistics?mid=5634", headers={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Referer":"http://www.footywire.com/afl/footy/ft_match_statistics?mid=5634","Cache-Control":"max-age=0"})
>>> tree = lxml.html.fromstring(response.text)
>>> rows = tree.xpath("//table//table//table//table//table//table//tr")
>>> for row in rows:
...     row.xpath(".//td//text()")
... 
[u'\xa0\xa0', 'Sydney Match Statistics (Sorted by Disposals)', 'Coach: ', 'John Longmire', u'\xa0\xa0']
['Player', 'K', 'HB', 'D', 'M', 'G', 'B', 'T', 'HO', 'I50', 'FF', 'FA', 'DT', 'SC']
['Josh Kennedy', '20', '17', '37', '2', '1', '1', '1', '0', '3', '1', '0', '112', '126']
['Jarrad McVeigh', '23', '11', '34', '1', '0', '0', '2', '0', '5', '1', '1', '100', '116']
... cont...

xpath查询可能有点脆弱,但你明白了这一点:)