1、创建爬虫项目
- 进入到你向放置项目的文件夹
- 按住shift点击右键,选择在此处打开power shell窗口
- 在命令行中创建爬虫项目: scrapy startproject 项目名
- 按照提示进入项目文件夹:cd 爬虫文件夹
- 创建爬虫文件:scrapy genspider 爬虫文件名 爬取的域名
2、打开爬虫项目
1、用pycharm打开项目
2、打开之后是这样的
3、编写爬虫,以爬取链家二手房信息为例
1、name属性一般不需要改,生成时自动带的
2、要改的是allowed_domains属性和start_urls属性。其作用见上图。
注意:这俩货是列表形式的,不要写成字符串或其他形式
在爬取不同域名的接口时,一定要在allowed_domains属性里加上接口的域名,否则访问不到
3、
parse是第一个接受返回信息的方法,可以在里面获取一些信息,比如:列表的链接、总页数等信息。这些都可以用xpath语法获取,scrapy框架对xpath语法的支持很棒哒。
4、用xpath获取信息
xpath语法可以百度,也可以使用谷歌浏览器的xpath插件学习,很容易上手。比起bs4不知道容易多少。
注意:如果想先获取某个节点,再用for循环获取里面节点的值,那么不需要再response.xpath()后面加东西;
如果想要获取文本信息的列表,则需要使用response.xpath().extract(),
如果想要获取单个文本信息时,则需要使用response.xpath().extract_first(),
5、将获取到的信息传到pipelines(最好不要在爬虫文件里对获取到的数据进行操作)
只需要一个yield item,就可以将保存信息的item传到pipeline中
6、分页操作
在获取信息时,需要有分页操作,这可是获取信息的重要步骤。
分页时可以根据具体情况构造出不同的下一页地址,要注意网站获取信息的方式是否是用Ajax传值的。
上图中使用了deepcopy,它的作用可以百度。
本例中的callback参数就是本身的方法名,要注意callback的参数是没有()的
在本例中,获取信息和翻页都是在一个方法中——parse_list2(),例子比较简单,就只获取了列表中部分信息。
7、将保存信息的item传到pipelines,下面介绍pipeline中的操作
管道的操作基本就是对数据的一些处理,比如:保存入库。
写完管道后,需要在settings中设置一下(就是把注释去掉)
当有多个管道时,也需要把管道按上面的格式写入其中。后面的数值表示优先级,数越小,优先级越高。管道比较多时,可以在其中的方法中添加判断爬虫的条件:if spider.爬虫名==‘当前管道处理的爬虫’,这样就可以把爬虫交给合适的管道类了。
4、setting中的一些设置
1、屏蔽一些输出
在setting中添加以下语句,可以只看到报错信息和你写的输出信息。如果不加,将会显示很多debug信息。一般获取不到数据的时候,可以将其注释掉来找debug的信息。
LOG_LEVEL = ‘WARNING’
2、将报错信息写进日志文件
添加一下语句
LOG_FILE = ‘./log.log’
将报错信息写进日志文件,就不用盯着终端看了