【问题标题】:Python Web Scraping with Selenium and lxml使用 Selenium 和 lxml 进行 Python Web Scraping
【发布时间】:2017-05-14 18:03:58
【问题描述】:

我有一个问题需要帮助。我正在尝试从网站上抓取一些数字(请参阅下面代码中的链接)。因为网站是使用 JavaScript 加载的,所以我使用 selenium 首先加载页面,然后将其传递给 xmlml 以解析数据。

我使用的代码如下:

from selenium import webdriver
from lxml import html
import time

url = "http://sebgroup.com/large-corporates-and-institutions/prospectuses-and-downloads/rates/swap-rates"
xpath = '//*[@id="doc"]/table[2]/tbody/tr[3]/text()'

chrome_path = "my_path"
browser = webdriver.Chrome(chrome_path)
browser.get(url)
time.sleep(10)

html_source = browser.page_source

tree = html.fromstring(html_source)
text = tree.xpath(xpath)
print (text)

当我通过浏览器直接查看页面时,我可以看到源代码中的数字。但是当我使用 selenium 做同样的事情时,我看到的源代码是不同的。我想知道这是否是因为该网站有一些反抓取软件?无论如何仍然可以获取数据吗? (我需要它们用于学术用途)。

【问题讨论】:

  • 你试过用firefox驱动吗?
  • 使用 iframe src 而不是尝试解析父页面...seb.se/pow/apps/swaprates/default.aspx
  • 永远不要在 xpath 中使用 tbody 标签,因为这种类型的标签有时会被浏览器自动插入并导致 xpath 失败。

标签: javascript python selenium web-scraping


【解决方案1】:

您要处理的表位于iframe 中,因此您应该在获取页面源之前切换到它。请尝试以下操作:

chrome_path = "my_path"
browser = webdriver.Chrome(chrome_path)
browser.get(url)
time.sleep(10)
browser.switch_to.frame(browser.find_element_by_tag_name("iframe"))
html_source = browser.page_source

【讨论】:

    猜你喜欢
    • 2020-01-16
    • 2018-11-11
    • 2018-02-13
    • 2020-08-18
    • 1970-01-01
    • 2017-03-06
    • 2021-03-12
    • 1970-01-01
    • 2019-01-06
    相关资源
    最近更新 更多