使用 Scrapy 抓取《纽约时报》

问题描述 投票:0回答:1

我正在尝试使用 Scrapy 来废弃《纽约时报》的一个学校项目。我尝试使用 NYT 提供的 API,但他们不允许访问最近的文章。

我试图废弃这个网站:https://www.nytimes.com/topic/company/alphabet-inc

我不确定出了什么问题,希望得到任何帮助!

我使用了下面的代码:

import scrapy
from bs4 import BeautifulSoup

class NytSpiderSpider(scrapy.Spider):
    name = "nyt_spider"
    start_urls = ["https://www.nytimes.com/topic/company/alphabet-inc"]

    def parse(self, response):
        #yield response
        titles = response.css('.css-1kv6qi').getall()   
        descriptions = response.css('.css-1pga48a').getall()
        links = response.css('.css-8hzhxf a::attr(href)').getall()

        for item in zip(titles, descriptions, links):

            all_items = {
                'title' : BeautifulSoup(item[0]).text,
                'description' : BeautifulSoup(item[1]).text,
                'link' : item[2],
            }

            # yield or give the scraped info to scrapy
            yield all_items

回复显示:

信息:抓取了 0 页(以 0 页/分钟),抓取了 0 项(以 0 项/分钟)

python scrapy web-crawler
1个回答
0
投票

代码中阻止您提取所需数据的唯一问题是,在执行

zip(titles, descriptions, links)
时,如果传递给
zip
的任何参数是空列表,它也会返回空列表;

[item for item in zip([1,2], ['a', 'b'])]
# [(1, 'a'), (2, 'b')]
[item for item in zip([1,2], ['a', 'b'], [])]
# []
[item for item in zip([1,2], [], ['a', 'b'])]
# []

因此,在您的代码中,如果您检查

links
的内容,您会发现这是一个空列表,最终不会产生任何结果。

© www.soinside.com 2019 - 2024. All rights reserved.