python - 使用 python 和 xpath 进行抓取

标签 python xpath web-scraping lxml

我正在尝试从以下网站抓取数据:

http://mozo.com.au/credit-cards/search#fetch/680

使用 Chrome 的“检查元素功能”,我已经能够找到我想要的元素地址:

//*[@id="p-40"]/div[4]/table/tbody/tr/td[1]/text()

我希望使用这段代码,我能够得到文本“9.99%”

import requests
page = requests.get('http://mozo.com.au/credit-cards/search#fetch/680')
tree = html.fromstring(page.text)


tree.xpath('//*[@id="p-40"]/div[4]/table/tbody/tr/td[1]/text()')

但是,输出是一个空数组。我哪里出错了?

最佳答案

喜欢tobifasc也就是说,页面是动态加载的。例如尝试使用 Selenium ,

首次安装:

pip3 install selenium

然后:

import lxml.html
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(url)

tree = lxml.html.fromstring(driver.page_source)

现在您可以查询:

# With your xpath there are 2 results...
results = tree.xpath('//*[@id="p-40"]/div[4]/table/tbody/tr/td[1]/text()')   
results[1].strip()
'9.99%'

关于python - 使用 python 和 xpath 进行抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31940525/

相关文章:

php - 如何获取具有多个类名的元素?

python - 我如何有条件地重试并重新抓取 Scrapy 中的当前页面?

java - 使用 HTMLUnit 通过 Java 进行网页抓取

ruby - Sidekiq Mechanize 覆盖实例

python - Skyfield:在给定的时间间隔内以 1 秒的周期获得 sgp4 结果

python - 基于另外两个变量创建变量

Python 2.7.1 : How to Open, 编辑并关闭 CSV 文件

python - 在不保存文件的情况下将excel数据上传到django

Java:如何获取 org.w3c.dom.Node 的 xpath?

python - 如何使用scrapy获取职位描述?