Python爬虫之Scrapy框架的基本使用

新建项目

进入自定义的项目目录中,运行创建命令:

scrapy startproject spider

spider 为项目名称,可以看到将会创建一个 spider 文件夹,目录结构大致如下:

spider/
    scrapy.cfg			# 项目的配置文件
    spider/				# 项目的 Python 模块,与项目名称重名,将从这里引用代码
        __init__.py
        items.py			# 项目的目标文件
        middlewares.py		# 项目的中间件
        pipelines.py		# 项目的管道文件,用来定义储存
        settings.py			# 项目的设置文件
        spiders/			# 存储爬虫代码目录
            __init__.py
            ...

定义字段

准备抓取 CSDN 网站首页推荐里所有的文章及链接、作者

创建一个 CsdnItem 类,和构建 item 模型(model):

import scrapy

class CsdnItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()

编写爬虫

在 spiders 文件夹中新建一个爬虫文件

正好 scrapy 有专门的命令来操作,在项目文件夹的路径下使用,取名为 csdn,并确定爬取的范围:

scrapy genspider csdn "csdn.net"

spider/spiders 文件夹里就新增了一个 csdn.py爬虫文件,打开文件,里面默认增加了下列代码:

import scrapy

class CsdnSpider(scrapy.Spider):
    name = 'csdn'
    allowed_domains = ['csdn.net']
    start_urls = ['http://csdn.net/']

    def parse(self, response):
        pass

如果要运行文件,就要用命令行:

scrapy crawl csdn

scrapy 就会开始爬取相应的网址,并输出相应的访问信息,比如访问时间、状态码、请求信息等

不过由于默认调用 pass,访问一遍链接后就直接关闭了,不会有后续操作,所以需要我们根据要求来进行编写,以便获取我们需要的内容


提取数据

通过每篇文章的标签,使用 css 选择器来提取内容:

import scrapy
from spider.items import CsdnItem

class CsdnSpider(scrapy.Spider):
    name = 'csdn'
    allowed_domains = ['csdn.net']
    start_urls = ['http://csdn.net/']

    def parse(self, response):
        items = []
        csdns = response.css('.list_con')
        for csdn in csdns:
            item = CsdnItem()
            title = csdn.css('.title h2 a::text').extract()
            link = csdn.css('.title h2 a::attr(href)').extract()
            auther = csdn.css('.list_userbar dd a::text').extract()
            item['title'] = title[0].strip()
            item['link'] = link[0]
            item['auther'] = auther[0].strip()
            items.append(item)
            print(item)
        return items

再次运行之后:
在这里插入图片描述


保存数据

scrapy 保存信息的最简单的方法主要有四种,-o 输出指定格式的文件,命令如下:

scrapy crawl csdn -o article.json

json lines格式,默认为Unicode编码

scrapy crawl csdn -o article.jsonl

csv 逗号表达式,可用Excel打开

scrapy crawl csdn -o article.csv

xml格式

scrapy crawl csdn -o article.xml
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值