首页 > 解决方案 > 使用代理抓取时无法跟踪页面上的链接

问题描述

我正在抓取这样的页面:

要刮的网站

我正在将 Python 与 Selenium 一起使用并通过 ProxyCrawler 进行连接。我需要做的一件事是点击所有链接,了解详细信息,请单击此处并在此处获取文本。链接如下所示:

<a href='javascript:void(0)' onclick=javascript:submitLink('TIDFT/AE/VI/IS/ID100201','KQ','KQ')>For details, click here</a>

如您所见,每个链接的 URL 都是由一个名为submitLink. 该功能未在页面源中定义;而是从头部引用的外部 .js 文件中调用它。我尝试将文件注入 DOM 以使函数运行,但到目前为止失败了。有关更多详细信息,请参阅我的问题here

因此,我尝试单击每个链接以使脚本运行。但是,这不适用于 ProxyCrawler。如果我直接连接,链接可以正常工作,但显然会暴露我的刮板。

这是最低限度的可行代码:

from selenium import webdriver
from urllib import parse

apikey = MY_KEY

scrapeurl = 'https://www.timaticweb.com/cgi-bin/tim_website_client.cgi?SpecData=1&VISA=&page=both&NA=' + \
            'ZW' + '&DE=' + 'AE' + '&user=KQ&subuser=KQ'
selenurl = 'https://api.proxycrawl.com/?token=' + apikey + '&url=' + parse.quote(scrapeurl)

DRIVER_PATH = '/Applications/chromedriver'
driver = webdriver.Chrome(executable_path = DRIVER_PATH)
driver.get(selenurl)
#driver.get(scrapeurl)

link = driver.find_element_by_xpath(".//a[contains(@onclick, 'submitLink')]")
link.click()

以上作品是我用的scrapeurl。它不适用于selenurl. 有没有办法使用 ProxyCrawler 并且仍然可以点击这些链接?

标签: pythonseleniumweb-scrapingproxy

解决方案


推荐阅读