使用“onclick”删除Javascript

2024-06-16 13:13:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在抓取以下url时遇到一些问题: http://102.37.123.153/Lists/eTenders/AllItems.aspx 我正在将Python与Selenium结合使用,但要运行许多“onclick”javascript事件以获得最低级别的信息。有人知道如何实现自动化吗? 谢谢

url = 'http://102.37.123.153/Lists/eTenders/AllItems.aspx'
chrome_options = Options()  
chrome_options.add_argument("--headless")  
browser = webdriver.Chrome('c:/Users/AB/Dropbox/ITProjects/Scraping/chromedriver.exe', options=chrome_options)
res = browser.get(url)
time.sleep(10)
source = browser.page_source
soup = BeautifulSoup(source)
for link in soup.find_all('a'):
    if link.get('href') == 'javascript:':
        print(link)

Tags: browserhttpurlsourcegetseleniumlinkjavascript
1条回答
网友
1楼 · 发布于 2024-06-16 13:13:14

你不需要硒这个网站,你需要耐心。让我解释一下你是怎么做到的

  1. 单击X
    • Y打开,单击Y
      • Z打开,单击Z。
        • 继续

这里发生的情况是,当您单击X时,会发出一个AJAX请求来获取Y,在您单击Y之后,会发出另一个AJAX请求来获取Z,然后继续

因此,您只需simulate这些请求,打开networks选项卡,看看它是如何处理请求的,然后在代码中生成相同的请求,然后得到响应,根据它,执行下一个请求,循环将继续进行,直到到达树的最内层

这种方法没有UI,从技术上讲,更不友好,更难实现。但是它更有效,另一方面,您可以使用selenium之类的选项选择可单击的元素

eleme = driver.find_elemnent_by_x('x')
elem.click()

它也会起作用

我还注意到,有时候,链接并不AJAX,它们只是隐藏了信息,但它在源代码中。要知道您将在回复中收到什么,请在网站中单击鼠标右键,然后选择View page source,注意这与inspect element不同

相关问题 更多 >