【发布时间】:2016-10-14 09:53:48
【问题描述】:
我正在尝试为以下 URL 构建一个简单的抓取:
http://www.bizjournals.com/milwaukee/datacenter/project-watch-what-is-being-built-in-milwaukee.html
我要做的是为地图上列出的所有项目建立一个电子表格:
- 项目名称
- Project Media(图片链接可以)
- 项目说明
我尝试了以下代码,但即使我专门寻找一个值,我仍然没有返回任何数据(AKA []):
from lxml import html
import requests
page = requests.get('http://www.bizjournals.com/milwaukee/datacenter/project-watch-what-is-being-built-in-milwaukee.html')
tree = html.fromstring(page.content)
#This will create a list of project titles:
project = tree.xpath('//*[@id="m4n-0552-popup-1"]/div[2]/b')
print('Projects:', project)
我猜问题是每次我加载页面时 ID 都会发生变化(即 0552 更改为不同的 4 位值)。
有什么建议吗?
【问题讨论】:
-
您是否尝试检查 page.content?打印出来看看有没有项目。
-
我做到了。所有的项目都在那里,所以看起来应该是可能的。但是,根据 PyNEwbie 下面的回答,抓取似乎违反了他们的 TOS。
-
解决4位ID变化问题的另一种方法是下载文件并从本地副本中提取数据。
-
@SweetBurlap 谢谢!这很有意义!
标签: python web-scraping beautifulsoup python-requests lxml