【发布时间】:2019-12-15 02:33:20
【问题描述】:
我正在尝试从 Google 的 Project Sunroof 中提取平方英尺和日照时间的数据,但是 XPath 只返回空白字符串。 这是一个Lowe's作为地址的相关代码:
from lxml import
htmlpageContent=requests.get('https://www.google.com/get/sunroof/building/34.00192560211979/-81.21430071233021/#?f=buy')
tree = html.fromstring(pageContent.content)
print(tree.xpath("/html/body/div[1]/address-view/div[1]/div/div/section[1]/div[2]/md-card[1]/ul/li[1]/div[2]"))
print(tree.xpath("/html/body/div[1]/address-view/div[1]/div/div/section[1]/div[2]/md-card[1]/ul/li[2]/div[2]/text()"))
在这种情况下,我想要一些类似的东西:
[1,581 hours of usable sunlight per year]
[134,199 sq feet available for solar panels ]
我只是得到:
[]
[]
我是这样的网络抓取和 xpath 的新手,所以我无法进行太多测试,但我知道不同的路径都会输出一个空白列表。
【问题讨论】:
-
总的来说,我认为 xpath 表达式的风格非常脆弱。无论如何,你做了什么来调试这个?您通常如何调试这种网络抓取?
-
此页面使用 JavaScript 向页面添加项目 - 您无法使用
request和lxml或BeautifulSoup获取它,因为它们无法运行 JavaScript。您可能需要Selenium来控制可以运行 JavaScript 的网络浏览器。 -
顺便说一句:下次在浏览器中关闭 JavaScript 并重新加载页面,看看 Python 能得到什么。
标签: python xpath web-scraping