【问题标题】:Scraping a website that has certain problems抓取存在某些问题的网站
【发布时间】:2020-06-02 00:02:01
【问题描述】:

我想用 Python(响应或 Selenium 库)抓取 this website 并抓取该作者的所有文章并将它们放入 PDF 文件中。
但是,当我单击底部的“显示更多”按钮时,8 次后,它不再显示更多文章,因此我无法全部访问它们(想法是自动化 selenium,单击它直到显示所有文章,然后将它们全部刮掉)。有解决方法吗?我可以按时间顺序访问所有文章并抓取它们的替代方法?
我的想法是以某种方式分析链接是否来自其他来源,但我一无所知。但是,我成功抓取了那些显示的文章。
提前致谢!

【问题讨论】:

  • 尝试登录。如果您已登录 NYTimes,您可以点击“显示更多”超过 8 次。
  • 代码试用一下好吗?
  • 发布你的代码你尝试了什么?

标签: python python-3.x selenium web-scraping automation


【解决方案1】:

使用 findElements 并搜索 <h2 class="css-1j9dxys e1xfvim30">...</h2>,这将为您提供所有标题的列表。每次单击“显示更多”时,列表的大小将增加 10 倍左右。所以想法是简单地单击按钮,直到列表的大小没有改变。使用 while 循环。比如:

List<WebElements> oldList = Driver.findElements(by.cssSelector("h2.css- 
    1j9dxys.e1xfvim30"));

List<WebElements> newList = new ArrayList<>();

WebElement button = Driver.findElement(by.xpath("//button[text()='Show More']"));

while(newList.size!=oldList.size){
    button.click();
    newList = List<WebElements> newList = Driver.findElements(by.cssSelector("h2.css- 
    1j9dxys.e1xfvim30));
}

我可能在代码中有一些错误,但想法就在那里。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多