【问题标题】:Webscraping Click Button SeleniumWebscraping 点击按钮 Selenium
【发布时间】:2021-02-26 10:42:07
【问题描述】:

我正在尝试使用 python、selenium 和 beautifulsoup 在网站上搜索 Indeed.com 来搜索工作。我想点击下一页,但似乎无法弄清楚如何做到这一点。查看了许多线程,但我不清楚我应该在哪个元素上执行。这是网页 html,当我检查下一个按钮时,会出现标记为灰色的代码。

还提到我首先尝试跟踪执行 mousedown 时 url 发生的情况。在阅读 addppurlparam 函数并在函数中添加字符串并使用该 url 后,我只是被扔回第一页。

这是我用于单击按钮的 selenium 类的代码:

   from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome("C:/Users/alleballe/Downloads/chromedriver.exe")
driver.get("https://se.indeed.com/Internship-jobb")
print(driver.title)
#assert "Python" in driver.title
elem = driver.find_element_by_class_name("pagination-list")
elem = elem.find_element_by_xpath("//li/a[@aria-label='Nästa']")
print(elem)
assert "No results found." not in driver.page_source
assert elem

action = ActionChains(driver).click(elem)
action.perform()
print(elem)

driver.close()

【问题讨论】:

    标签: python html selenium beautifulsoup


    【解决方案1】:

    Indeed 网站的格式设置为每页显示 10 个。

    您的照片显示了错误的 HTML 部分,而您可以看到链接包含第一页的 start=0,第二页的 start=10,第三页的 start=20,...

    您可以利用这些知识编写如下代码:

    while True:
        i = 0
        driver.get(f'https://se.indeed.com/jobs?q=Internship&start={i}')
        # code here
        i = i + 10
    

    但是,要直接回答您的问题,您应该这样做:

    next_page_link = driver.find_element_by_xpath('/html/head/link[6]')
    driver.get(next_page_link)
    

    这会找到链接然后获取。

    【讨论】:

    • 非常感谢,我应该已经注意到了这一点。我的想法是 addppurlparam 函数将 href 更改为新的 url 目标(下一页),这不是真的吗?因为我确实尝试手动计算返回到第 1 页的结果。
    • @brovatten addppurlparam-function 确实会这样做,但使用该 URL 不是必要。该 URL 添加了另一个参数(可能用于跟踪请求来源或类似的东西),但没有此参数不会影响页面的内容。
    【解决方案2】:

    它的工作。分页到下一页。

    driver.find_element_by_class_name("pagination-list").find_element_by_tag_name('a').click()
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2014-02-16
      • 2016-05-08
      • 2021-09-14
      • 2018-05-11
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多