【发布时间】: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