【问题标题】:How to Open a different link on a page with python selenium for scraping?如何使用 python selenium 在页面上打开不同的链接进行抓取?
【发布时间】:2021-10-19 07:57:51
【问题描述】:

我有以下代码用于打开包含我想要抓取数据的页面的“新建”链接(如屏幕截图所示)。它工作正常,实际上点击了链接,但我得到的汤仍然是“流行”下的内容(如屏幕截图所示)。

我做错了什么?

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.homeworkmarket.com/fields/business-finance")
time.sleep(2)
doc = driver.find_elements_by_xpath('//*[@id="wrapper"]/div[2]/div[1]/div[1]/div[3]/div[1]/ul/li[1]/a')[0]
doc.click()
time.sleep(10)
page = driver.page_source
soup = BeautifulSoup(page, 'html.parser')

抓取 href 链接的其余代码:

question_links = soup.find_all(class_='css-e5w42e')
final_links = []
for link in question_links:
    if 'href' in link.attrs:
        link = 'https://www.homeworkmarket.com' + str(link.attrs['href'])
        print(link)
        final_links.append(link)

【问题讨论】:

  • 你要抓取什么数据?也可以用@回复
  • 嗨@cruisepandey,谢谢。我想废弃“新建”部分下的 href 链接。尽管使用 find_elements_by_xpath 查找并单击“新建”部分,但我当前的代码正在执行此操作,但仅适用于“热门”部分。将不胜感激任何帮助
  • 好吧,看看下面的答案。

标签: python selenium selenium-webdriver beautifulsoup


【解决方案1】:

您不需要点击新建,因为元素已经存在于 HTML DOM 中:

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://www.homeworkmarket.com/fields/business-finance")

for link in driver.find_elements(By.XPATH, "(*//a[text()='New']/ancestor::div[contains(@class,'css')])[3]/following-sibling::div/section/descendant::a[contains(@class,'css')]"):
    print(link.get_attribute('href'))

最初的 80 个链接来自热门标签,其余的应该来自​​新标签。

【讨论】:

    【解决方案2】:

    这不会打开新页面,只是扩展现有页面的某些区域。
    页面源甚至在可视化扩展之前就包含此数据,这就是为什么单击该按钮仍会通过执行为您提供相同的page 数据

    page = driver.page_source
    
    

    【讨论】:

    • 那我该怎么做呢?
    • 你想做什么?
    • 我想废弃“新”部分下的链接。我拥有的当前代码成功地让我获得了“流行”部分下的链接。我已经添加了整个代码 sn-p。
    • 我尝试使用 find_elements_by_xpath 查找并单击“新建”部分,该部分有效,但报废的内容仍处于流行状态
    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2018-07-20
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多