Featured image of post Python使用scrapy框架抓取CSDN文章阅读量

Python使用scrapy框架抓取CSDN文章阅读量

前言

自己写爬虫算下来多少也有那么些了,但基本上都是爬的小数据完全不用考虑效率。但今天小J的朋友让我帮忙爬下全国XXX酒店信息。这不得去考虑爬虫效率,以及反反爬虫技巧。此时我脑海里第一想到了scrapy框架。今天小试scrapy,爬下自己的博客统计下文章的浏览量。

正文

0x01 scrapy安装

  • 建立虚拟python3.6环境
conda create --name python3.6 python=3.6
  • 安装scrapy
activate python3.6
conda install scrapy

0x02 项目

  • 建立scrapy项目
scrapy startproject csdn
  • 使用pycharm打开项目并创建csdn.py
import scrapy

class csdnSpider(scrapy.Spider):
    name = 'csdn'
    #文章分页url
    start_urls = [
        'https://blog.csdn.net/vr7jj/article/list/1',
        'https://blog.csdn.net/vr7jj/article/list/2'
        ]

    def parse(self, response):
        print('#-----------------------')
        li = response.css('#mainBox > main > div.article-list > div > h4 > a')
        for i in li:
            # print(i)
            title = str(i.css('::text').extract()[2]).strip()
            link = i.css('::attr(href)').extract()[0]
            print('next --> [%s][%s]' % (link,title))
            yield scrapy.Request(link,callback=self.parse_item, meta={'title': title})

            # print(i.css('attr(href)').extract())
        print('#-----------------------')


    def parse_item(self, response):
        title = response.meta['title']
        print('******%s*******' % title, end='')
        con = response.css('#mainBox > main > div.blog-content-box > div.article-info-box > div > div > span::text')
        print(con.extract()[0], end='')
        print('************************')
  • 创建begin.py
from scrapy import cmdline
cmdline.execute("scrapy crawl csdn".split())
  • 运行begin.py 这里写图片描述

感想

scrapy功能很强大,认识有限。所以目前留下很多问题。

  1. post请求方式如何去爬取
  2. 需要登陆scrapy有什么处理方式
  3. 如何持久化
  4. 反反爬虫怎么实现

参考内容

Scrapy框架
Scrapy 1.5 documentation
Scrapy 0.24 中文文档
scrapy实现递归爬取
scrapy如何迭代爬去?

Licensed under CC BY-NC-SA 4.0
最后更新于 2024-05-06 23:18 CST