使用Scrapy爬取CSDN博客首页文章

Scrapy, a fast high-level web crawling & scraping framework for Python


CSDN博客首页如下,包括:推荐资讯人工智能等栏目

这里写图片描述


每一个栏目下有不同的推荐文章列表,我们使用Scrapy来读取这些栏目的推荐文章列表

这里写图片描述


定义爬虫如下

class QuotesSpider(scrapy.Spider):
    name = "csdn"

    def start_requests(self):
        urls = [
            'http://blog.csdn.net'
        ]
        tag = getattr(self, 'tag', None)
        print("tag is %s" % tag)

        for url in urls:
            print("do request on %s" % url)
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        # page = response.url.split("/")[-2]
        # filename = 'data/quotes-%s.html' % page
        # with open(filename, 'wb') as f:
        #     f.write(response.body)
        # self.log('Saved file %s' % filename)

        for ul in response.css(".nav_com ul li"):
            yield {
                'nav_text': ul.css("a::text").extract_first(),
                'nav_href': ul.css("a::attr(href)").extract_first(),
            }
            yield response.follow(ul.css("a::attr(href)").extract_first(), callback=self.get_article_list)

            # for a in response.css(".list_con"):
            #     yield {
            #         'article_title': a.css("a::text").extract_first(),
            #         'article_href': a.css("a::attr(href)").extract_first()
            #     }

            # next_page = response.css('.nav_com ul li a::attr(href)')[2].extract()
            # if next_page is not None:
            #     print("next_page %s" % next_page)
            #     yield response.follow(next_page, callback=self.parse)

    @staticmethod
    def get_article_list(response):
        for a in response.css(".list_con"):
            yield {
                'article_title': a.css("a::text").extract_first(),
                'article_href': a.css("a::attr(href)").extract_first()
            }


爬取结果如下
这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值