scrapy入门

来源:互联网 发布:http 文件 json 上传 编辑:程序博客网 时间:2024/06/16 06:26

笔者python版本为3.5.2

1、首先使用pip3安装scrapy:

pip3 install scrapy

如果出现缺少库依赖的可以上网查一查安转相应的库依赖

测试安装成功:

输入 scrapy  会出现 scrapy的指令参数提示等内容

2、创建一个scrapy项目

scrapy startproject Demo

此时会创建一的Demo目录,进入后有一个Demo目录和一个scrapy.cfg的配置文件

进入Demo,有一系列文件,爬虫是需要写在spider目录里面

3、创建一个爬虫文件

scrapy genspider spider "www.baidu.com"


创建爬虫的指令是 scrapy genspider [options] <name> <domain>

我们创建的名字是spider  域是www.baidu.com 这个域限定了爬虫的网页范围,一旦离开这个域的网页就不会发送请求

爬虫的名字很重要,执行爬虫是依赖名字执行 而不是依赖爬虫文件名执行


4、写爬虫文件

$ vim spider.py

在parse函数中写入爬虫代码,这里为了简单示范只打印网页源代码

def parse(self, response):    print( response.body )

5、运行爬虫:

scrapy crawl spider

注意:

1.上面也提到了 运行爬虫依赖的是爬虫的名字, 而不是文件 所以运行的时候  是spider而不是spider.py

查看爬虫源代码(spider.py) 可以看见这个类指定了三个属性 name,start_urls,allowed_domains

name 也就是爬虫的名字,很重要,不可重复不可缺少

allowed_domains即上面提到了爬虫的域,限定爬取范围 非必须,可以不写

start_urls 爬虫的起始网页,不可缺少

2. 直接执行应该是爬去不到任何东西的,原因是在上级目录中有个settings.py文件

打开这个文件跳转到第22行  把这行注释掉  或者值改为False

这句话是干什么的呢?看上一行,遵循网页爬虫规则,网页爬虫规则是什么?不用想很多都有禁止爬虫的,所以不要遵循

3.不知道什么原因,打印的内容很少,只有一段,可能与百度的网页代码获取方式有关,也可能是反爬虫了的原因,

所以我又使用了我学校的一个简单网页做了测试,

打印的结果中出现了很多\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8 这种字符,应该是编码格式的问题 ,

python3的是unicode,这个应该是utf-8,如果你也出现了这样的问题,可以修改解码的方式来解决这个问题

response.body.decode("utf-8")

4.执行爬虫可以在这个项目的任何位置执行,并不一定要在爬虫所在的文件夹下执行,

scrapy框架的指令都是以scrapy开头的,参数有哪些 可以直接输入scrapy查看 

比如 crawl就是执行一个爬虫,list就是显示当前项目下有多少个爬虫,genspider就是创建一个爬虫文件。


文章后面会继续更新,包括介绍setting.py里面一些代码的意义,项目下面文件的意义等。



原创粉丝点击