V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
CareiOS
V2EX  ›  程序员

[求助] 使用 scrapy 爬 nytimes, html 中时间的值总是错误的

  •  
  •   CareiOS · 21 小时 4 分钟前 · 373 次点击

    今天想爬点 nytimes 的新闻来看,爬这个地址的时候,每条消息的 date 爬取不到。 https://www.nytimes.com/section/politics

    我加了 scrapy-playwright 还是一样的。求爬虫大声指点一下。

    这是爬虫代码

    import scrapy
    
    from my_spider.items import MySpiderItem
    
    class Mypider(scrapy.Spider):
        name = "myspider"
        allowed_domains = ["nytimes.com"]
        start_urls = ["https://www.nytimes.com/section/politics"]
    
        def start_requests(self):
            for url in self.start_urls:
                # 使用 PlaywrightRequest 来加载动态内容
                # GET request
                yield scrapy.Request(url, meta={"playwright": True})
                # POST request
                yield scrapy.FormRequest(
                    url="https://httpbin.org/post",
                    formdata={"foo": "bar"},
                    meta={"playwright": True},
                )
    
        def parse(self, response):
            for article in response.css('.css-18yolpw'):
                item = MySpiderItem()
                item["title"] = article.css('div:nth-child(1) > article:nth-child(1) > a:nth-child(2) > h3:nth-child(1)::text').get()
                t = article.xpath('div/article/a/h3/text()').get() 
                item["date"] = article.css('div:nth-child(1) > div:nth-child(2) > span:nth-child(1)::text').get()
                d = article.xpath('div/div/span/text()').get()
                item["url"] = response.urljoin(article.css('div:nth-child(1) > article:nth-child(1) > a:nth-child(2)::attr(href)').get())
                item["claim"] = article.css('div:nth-child(1) > article:nth-child(1) > p:nth-child(3)::text').get()
                item["rating"] = "True"
                item["site"] = "NYTimes"
                item["tag"] = "NYTimes"
                yield item
    

    d 的值都是"\u00a0"

    3 条回复    2025-01-24 16:30:56 +08:00
    alabrala
        1
    alabrala  
       19 小时 40 分钟前   ❤️ 1
    网页返回的原始文本对应的时间标签就是空的
    时间是 js 加载的
    在这:

    你需要把那段 json 提取出来做解析
    CareiOS
        2
    CareiOS  
    OP
       18 小时 6 分钟前
    @alabrala 大佬,你的图看不到了。
    alabrala
        3
    alabrala  
       15 小时 8 分钟前
    @CareiOS 网络问题吧,你刷新一下,换个稳定的梯子
    实在不行你去你拿下来的 html 里搜:window.__preloadedData
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   986 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 23:39 · PVG 07:39 · LAX 15:39 · JFK 18:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.