如何使用 Scrapy 在可以选择加载更多帖子的网站上抓取数据?

尼禄

我想使用scrapy从以下网站的所有帖子中获取标题和日期:https : //economictimes.indiatimes.com/markets/stocks/recos 我是scrapy的新手,无法理解如何加载更多帖子和废料他们。

这是我在教程之后编写的代码,但它只删除了前几篇文章。

import scrapy

class PostsSpider(scrapy.Spider):
    name="posts"

    start_urls=[
        'https://economictimes.indiatimes.com/markets/stocks/recos'
    ]

    def parse(self,response):
        for post in response.css('div.eachStory'):
            yield{
                'title': post.css('a::text').get(),
                'date' : post.css('time::text').get()
            }
            next_page=response.css('div.autoload_continue').get()
            if next_page is not None:
                next_page = response.urljoin(next_page)
                yield scrapy.Request(next_page, callback=self.parse)

我正在使用 .csv 格式将其打印出来scrapy crawl posts -o posts.csv我不确定是否有可能完成所有帖子。任何帮助将不胜感激,提前致谢。

她曾经是

据我所知,div.autoload_continue不包含任何链接。它就像一个按钮,如果你点击它,它会用 JavaScript 请求。您可以通过在 中查看来检查请求的端点Devtools > Networks

这是我所看到的:网站请求首次加载https://economictimes.indiatimes.com/lazyloadlistnew.cms?msid=3053611&curpg=1&img=1
然后如果我向下滚动它请求
https://economictimes.indiatimes.com/lazyloadlistnew.cms?msid=3053611&curpg=2&img=1
当我点击加载更多它请求
https://economictimes.indiatimes.com/lazyloadlistnew.cms?msid=3053611&curpg=3&img=0

看参数curpg,它在增加;它表示页面。您可以只迭代数字来更改curpg参数。
imgparam 是显示图像的开关。
至于msidparam,它是文章列表的id。您可以从元数据中找到该值<meta content="https://economictimes.indiatimes.com/markets/stocks/recos/articlelist/3053611.cms" property="og:url">

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章