scrapy爬虫实战笔记(一)
#scrapy实战基本操作#
1.创建项目
1.1打开Dos命令窗口:
Win+R,输入cmd,按下回车键,进入命令窗口
1.2进入D盘:
d: + 回车 
1.3新建文件夹
在想要建立spider项目的目标地址先创建一个新的文件夹:鼠标右键,新建文件夹

1.4进入文件路径
在dos命令窗口中进入到创建的文件夹(图中第2行):cd 路径 + 回车键

1.5创建scrapy项目:
1.5.1dos命令窗口输入(此时路径位置已在上一步骤的文件夹中):
scrapy startproject 项目名称
结果如图且该路径下出现了创建的文件夹,说明项目创建成功

1.6创建爬虫文件:
1.6.1进入scrapy项目文件夹:cd 项目名称
1.6.2创建爬虫文件:爬虫文件名尽量不要修改,域名可以在文件中修改(创建时可随意写)
scrapy genspider 爬虫文件名 域名

1.7Pycharm打开scrapy项目
File>open>选择已建立的scrapy项目(注意选外层的项目名称,此处为第一个house_data)

2.scrapy初级操作
2.1打开爬虫文件
若认为parse函数参数部分警告看着难受可添加**kwargs参数,如图


2.2修改目标网址域名
(主要是start_urls要全)

2.3替换USER-AGENT:
打开settings文件,从网页中复制一个USER-AGENT把scrapy中的USER-AGENT替换掉,如图为替换前后的情况


2.4修改君子协议为FALse
即不依据君子协议来获取信息


2.5对网页响应结果的操作(settings的基础设置)
2.5.1打印源代码(爬虫文件中写)

2.5.2执行爬虫
dos命令窗口中输入:scrapy crawl 爬虫文件名
(此步骤中打印出的响应除源代码外还有日志文件,我们一般把日志文件屏蔽,该步骤见2.4.3)

2.5.3修改日志文件等级(屏蔽日志文件)
settings文件中,添加日志文件登记为“ERROR”,即日志文件出现异常时才会在响应结果中打印出现
(原文件中没有,需自行添加,另,“ERROR"为最高等级)

3.爬虫文件中的函数在实操中的动作关系
spider将地址交给引擎,引擎会处理且下载,并将下载后的结果(即响应)传递给parse中的response参数,让parse来对response做一个处理

4.scrapy解析并处理数据
4.1scrapy中封装了xpath等解析器,便于解构
4.2将解析的数据存储于items中
4.2.1定义数据名称
打开items文件,定义需存储数据的名称

4.2.2将items.py文件中定义数据的类导入爬虫文件中
打开爬虫文件,导入:from 项目名称.items import 类名
![]()
4.2.3创建对象并存储数据
因此处xpath返回的不是列表,而是构造器,所以我们想将响应中的值(只有一个值时)取出来可以使用extract_first(),
取出所有值可以用extract()——将所有值取出后放入一个列表,可以用.join将列表内容放一起并输出一个字符串

4.3继续处理下一级地址(href)
将详情页地址url交给调度器排队,继而交给下载器下载,下载后将下载的结果(即响应,此处为详情页源代码)交给自定义的函数去处理,
此处使用生成器来实现(即含有yield的函数)

4.4传递item到下一个函数
我们希望详情页存储的数据和前面存储的数据放一起,那么就需要将前面存储的item传递到下面一个处理函数来处理。
此处使用meta(meta是一个字典)和深拷贝deepcopy来实现,并在下一个函数中通过“键”来取得“值”item。
这种方式打印item时会发现明显比只有第一个处理函数中打印时速度慢很多,原因是:yield里面有href,我们已经在传递数据的过程中把详情页数据已经下载过一遍了。(生成器函数:第一个处理函数数据全部处理完毕后,才会结束该函数的执行。即我们每处理一次首页的信息紧接着就会下载一次详情页的信息)

4.5翻页操作
因为调度器的存在,我们的下载不会重复

若想保留重复内容,需修改参数dont_filter为True,其默认值为False

更多推荐




所有评论(0)