【问题标题】:Scraping news articles using Selenium Python使用 Selenium Python 抓取新闻文章
【发布时间】:2022-11-19 22:54:10
【问题描述】:

我正在学习从网站https://tribune.com.pk/pakistan/archives 抓取新闻文章。第一件事是抓取每篇新闻文章的链接。现在的问题是 <a 标签中包含两个 href,但我想获得第一个 href 标签,但我无法做到 我附上那个特定部分的html 我写的代码返回了 2 个 href 标签,但我只想要第一个

def Url_Extraction():
    category_name = driver.find_element(By.XPATH, '//*[@id="main-section"]/h1')
    cat = category_name.text  # Save category name in variable
    print(f"{cat}")
    news_articles = driver.find_elements(By.XPATH,"//div[contains(@class,'flex-wrap')]//a")  
  
    for element in news_articles:
        URL = element.get_attribute('href')
        print(URL)
        Url.append(URL)
        Category.append(cat)
        current_time = time.time() - start_time
        print(f'{len(Url)} urls extracted')
        print(f'{len(Category)} categories extracted')
        print(f'Current Time: {current_time / 3600:.2f} hr, {current_time / 60:.2f} min, {current_time:.2f} sec',
              flush=True)

此外,我可以分页,但无法通过单击主页上提供的各个链接来获取完整的文章。

【问题讨论】:

  • 您是否正在尝试学习 Selenium。还是您实际上是在获取该数据?如果您正在尝试学习 Selenium,请在正确的上下文中使用它:QA 测试。如果您正在尝试抓取该数据,请使用适合网络抓取的工具。

标签: python selenium web-scraping


【解决方案1】:

您必须修改以下 XPath:

而不是这个 -

news_articles = driver.find_elements(By.XPATH,"//div[contains(@class,'flex-wrap')]//a")

用这个 -

news_articles = driver.find_elements(By.XPATH,"//div[contains(@class,'flex-wrap')]/a")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2022-08-10
    • 2018-07-07
    相关资源
    最近更新 更多