1、文件位置打开cmd创建scrapy项目 scrapy startproject anjuk
2、在项目下的spideres目录下创建项目的spider,可以直接常见.py文件
还可以命令行创建,会生成文件和类:文件名为actorspider ,allowed_domains= [‘www’]
作为启动项目的main
3、把setting中的ROBOTSTXT_OBEY = True 改为False
4、打开注释的请求头
5、测试看看能不能获取到页面 : 先设置打印,然后运行main.py文件
如果没有结果试试设置cookie
如果需要添加cookie要把COOKIES_ENABLED = False 注释打开
注意下面会分为两种情况:
第一种情况、html源码中都是script 无法获取到标签和数据,通过使用中间件,中间件在dowload之前调用,了解中间件:
###setting打开注释的配置:
DOWNLOADER_MIDDLEWARES = {
‘bosszp.MyMiddleWares.MiddleWares_Tencent’: 543,
}
只有配置之后才会走Download Middlewares,不然会直接走download
不用对中间件进行调用,只要配置,scrapy自动会走
在middleware中使用selenium获取HTML,返回给downloader.
如腾讯项目的例子:https://careers.tencent.com/search.html?index=
配置:
函数路径快捷获取:双击函数名-右键
把HTML返回给download中的response了,内部会实现把response转为selector对象,可以使用xpath,像第二种情况往下走
但是一旦使用了中间件middleware中使用selenium会降低scrapy的速度。
第二种情况:页面中有标签和数据
直接在spiders中往下写就ok,例子安居客:https://guangzhou.anjuke.com/sale/tianhe/?pi=baidu-cpc-gz-tyong1&kwid=1956762976
item = item.py的类名,如果没有实例化对象,直接yied是字典就不用管item.py文件字段
记得在piplines把item以字典的数据存入mongodb数据库,有需要存储的内容item.py的类的函数中要设置相关字段,不然会为空
接着获取详情页的信息:之后,yield item,开始编写pipeline的内容
最后在piplines.py中把数据写入数据库:写好pipeline之后,需要配置才能生效。配置setting