【问题标题】:Scraping using python and xpath使用 python 和 xpath 进行抓取
【发布时间】:2015-11-03 14:31:25
【问题描述】:

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

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()')

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

【问题讨论】:

  • 问题是页面的内容是动态加载的。您应该了解抓取动态网页的概念。
  • 你有什么可以推荐的资源吗?
  • 没什么了不起的...只要知道页面可以加载动态内容并且因此会变得混乱。你需要一个可以处理 javascript 的爬虫。例如。 selenium

标签: python xpath web-scraping lxml


【解决方案1】:

就像tobifasc说的,页面是动态加载的。以硒为例,

首次安装:

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%'

【讨论】:

    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多