我正在尝试从Google的天窗项目中提取平方英尺和日照小时的数据,但是XPath仅返回空白字符串。 这是带有Lowe的地址的相关代码:
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 ]
相反,我只是得到:
[]
[]
我对这样的Web爬取和xpath还是陌生的,因此我无法进行很多测试,但是我知道不同的路径都会输出空白列表。
答案 0 :(得分:0)
正如@furas指出的那样,对于那些依赖Javascript获取内容的页面(如今,这是大多数内容),您将需要使用selenium之类的东西来控制实际的Web浏览器。一个简单的解决方案可能看起来像这样:
>>> from selenium import webdriver
>>> d = webdriver.Chrome()
>>> d.get('https://www.google.com/get/sunroof/building/34.00192560211979/-81.21430071233021/#?f=buy')
>>> [e.text for e in d.find_elements_by_css_selector('.panel-fact-text')]
['1,581 hours of usable sunlight per year', '134,199 sq feet available for solar panels']
>>> d.close()