python - 使用代理抓取时无法跟踪页面上的链接
问题描述
我正在抓取这样的页面:
我正在将 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 并且仍然可以点击这些链接?
解决方案
推荐阅读
- powershell - 使用 Pester PowerShell 进行全局模拟
- java - 无法在 JTabbedPane 中将 JTextfield 添加到 JPanel
- java - 为什么我在编码后在 Netbeans 10 中找不到 Javafx 桌面应用程序
- c - 函数 kbhit 在 C 中移动对象
- android - values-v28.xml:5:5-8:13: AAPT: 找不到与给定名称匹配的资源(在 'dialogCornerRadius' 处,值为 '?android:attr/dialogCornerRadius')
- python - 如何在python中编写一个字母二元组(aa,ab,bc,cd ... zz)频率分析计数器?
- javascript - ES6 导入失败
- laravel-5 - 为什么刀片显示模型原始值而不是属性?
- php - 如何内部连接 2 个 SQL 表,但只从第二个表中获取第一个结果?
- substring - 在 Wikidata Query Service 上使用 SPARQL 查找字符串中最长的三个子字符串,并在字符串中对它们进行排序