Scrapy知识点总结(1)

本文详细介绍Scrapy爬虫的基础操作,包括项目创建、URL规律爬取、数据解析与存储等核心步骤,适合初学者快速入门。

Scrapy知识点总结(1)

一.最基础最常见操作

A:无深度的简单爬取(url有规律型)

1:创建项目

(xx代表随机,根据项目而定,下面的所有xx都不一定是相同的)

scrapy start project XX
cd XX
scrapy genspider xx xx.com

2: 进入spiders\xx,进行对XXSpider略微修改

XXSpider类中的变量含义

名称含义
name该爬虫项目的名称,类型str
start_urls需要爬取得链接,类型list
allowed_domains只允许list中的域名通行

XXSpider类中的方法含义

名称含义
parseRequest类爬取返回的结果

parse函数的第二个参数response最常用的几个方法

名称含义
text返回一个字符串类型的body(基于python3,python2返回的是unicode)
css返回的是Selector(text)
xpath返回的是Selector(text)

至于如何略微修改
如果在A.1创建项目符合标准的话,那么类成员nameallowed_domains是无需修改的。 只需要对start_urls进行改动。
Q:如何改?
A:我们需要爬取xx.com用户ID从1-50000的用户信息。其链接是有规律的。 https://bbs.xx.com/userInfo/{id} , 那么我们其实就可以通过列表生成器来生成这个start_urls

start_urls = ['https://bbs.xx.com/userInfo/{id}'.format(id=i)  for i in range(1,51)]

Q:到了parse函数,如何改?

A:这就使用上面介绍的parse函数的第二个参数response最常用的几个方法中有三个response.text|css|xpath其中之一进行修改就好。根据需求拿到需要的数据。

这边parse的修改暂时告一段落, 因为到后面还要回来改。

3:修改items.py文件

这边就比较简单了,直接修改CrawlItem,类有一个参数。item 类型是dict(跟进源码3层可知)。
比如我们此时需要id,name,tel三个字段。代码就可以如下图所示:
(默认的Item可能是scrapy.Item,Field同理。自己修改下导包形式就好了。从import scrapy.Itemimport scrapy.Field -> from scrapy import Item,Field

class XXItem(Item):
    # define the fields for your item here like:
    id = Field()
    name = Field()
    tel = Field()
    pass

4:回头修改XXSpider的parse

我们爬取了数据,那么必须是要使用的。 所以呢,我们上面的items.py文件其实就是为我们这个进行一个准备。 已知我们需要id,name,tel.此时我们导入items.py的XXItem类 方式:from ..items import XXItem.
于是就可以写出下面的代码,至于关键信息的处理方式,依然看实际情况及个人喜好而定。无是非对错!

html = response.body.decode('utf-8')

pattern = re.compile('<a href="http://bbs.xiaomi.cn/t-(\d+)" class=\'title_name \'  target="_blank" rel="noopener noreferrer">(.*?)</a>.*?target="_blank" rel="noopener noreferrer">(.*?)</a>',re.S)
for item in re.findall(pattern,html):
    print(item)
    it = CrawlItem()
    it['id'] = item[0]
    it['title'] = item[1]
    it['author'] = item[2]
    yield it

此时我们上面的it会传到pipelines文件中的XXPipeline类的process_item方法。

5.存储文件

在第四点说到了it的内容会传到XXPipeline类的process_item方法。那么我们只需要对process_item文件进行文件读写/数据库操作等你认为有意义的操作即可。
此时务必不要忘记了,在setting.py文件中的ITEM_PIPELINES取消注释。该步骤忘记了会导致无法存储数据。

ITEM_PIPELINES = {
    'XX.pipelines.XXPipeline': 300,
}

这里丢上一张scrapy框架流程图,官方文档最新的
_PIPELINES = {
‘XX.pipelines.XXPipeline’: 300,
}

这里丢上一张scrapy框架流程图,官方文档最新的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值