博客园只爬取每页第一条

来源:4-10 编写spider完成抓取过程 - 2

fine纯粹

2020-04-04

我是用您的源代码运行的,因为每页只爬取一条大概10页过后就要登录了

http://img1.sycdn.imooc.com/szimg/5e87faae0974b18b13530482.jpg

#收集博客园所有404的url以及404页面数
handle_httpstatus_list = [404]

def __init__(self, **kwargs):
    self.fail_urls = []
    dispatcher.connect(self.handle_spider_closed, signals.spider_closed)

def handle_spider_closed(self, spider, reason):
    self.crawler.stats.set_value("failed_urls", ",".join(self.fail_urls))

def parse(self, response):
    """
    1. 获取文章列表页中的文章url并交给scrapy下载后并进行解析
    2. 获取下一页的url并交给scrapy进行下载, 下载完成后交给parse
    """
    #解析列表页中的所有文章url并交给scrapy下载后并进行解析
    if response.status == 404:
        self.fail_urls.append(response.url)
        self.crawler.stats.inc_value("failed_url")

    post_nodes = response.css('#news_list .news_block')
    for post_node in post_nodes:
        image_url = post_node.css('.entry_summary a img::attr(src)').extract_first("")
        if image_url.startswith("//"):
            image_url = "https:" + image_url
        post_url = post_node.css('h2 a::attr(href)').extract_first("")
        yield Request(url=parse.urljoin(response.url, post_url), meta={"front_image_url": image_url},
                      callback=self.parse_detail)
        break

    #提取下一页并交给scrapy进行下载
    next_url = response.xpath("//a[contains(text(), 'Next >')]/@href").extract_first("")
    if next_url:
        yield Request(url=parse.urljoin(response.url, next_url), callback=self.parse)

不知道哪里出了问题,要怎么获取每页的全部文章呢?

写回答

4回答

fine纯粹

提问者

2020-04-06

解决方法:把循环的break去掉就可以了

0
0

bobby

2020-04-06

//img1.sycdn.imooc.com/szimg/5e8ac262095f86ab09900121.jpg 这里保存到数据库中的地方都改成这种模式获取 //img.mukewang.com/szimg/5e8ac2ca09c6582009490400.jpg

0
2
bobby
回复
fine纯粹
好的,
2020-04-07
共2条回复

fine纯粹

提问者

2020-04-05

爬取一条后报错信息

//img.mukewang.com/szimg/5e89734409a3e09008870192.jpg//img.mukewang.com/szimg/5e89737609ea62be09690515.jpg


0
0

bobby

2020-04-05

//img1.sycdn.imooc.com/szimg/5e895fa9091bcf5a07120097.jpg 可以把这个逻辑注释一下 测试看看能否提取同一页的所有内容

0
2
bobby
回复
fine纯粹
看看我上面的回复
2020-04-06
共2条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5795 学习 · 6290 问题

查看课程