安装Scrapy
pip install Scrapy
安装mongodb
pip install pymongo
下面我们做一个简单示例,创建一个名字为BOSS的爬虫工程,然后创建一个名字为zhipin的爬虫来爬取zhipin.com网站
创建工程步骤:
1、创建工程 scrapy startproject BOSS
2、创建爬虫程序 cd BOSS 回车 scrapy gensipder zhipin zhipin.com
3、编写数据存储模板items.py 类对象继承自scrapy.item
4、编写爬虫zhipin.py 类对象集成子scrapy.Spider
5、修改settings.py配置文件 ITEM_PIPELINES =
{'BOSS.pipelines.WwwZhipinComPipeline':100}
6、编写数据处理脚本进行数据保存,pipelines.py 类对象继承自object
def process_item(self, item, spider):
with open("my_boss.txt", 'a') as fp:
fp.write(item['name'] + '')
7、执行爬虫 cd BOSS 回车 scrapy crawl zhipin --nolog
注意:如果导出的中文信息乱码则需要在settings.py文件中配置编码:FEED_EXPORT_ENCODING = 'utf-8'
创建爬虫zhipin
1、输入如下命令,创建zhipin爬虫
scrapy startproject www_zhipin_com
cd www_zhipin_com 回车 scrapy gensipder zhipin www.zhipin.com
2、修改zhipin.py,爬取数据,类中成员属性含义代码中都有解释,这里不做解释,需要注意的是parse方法,该方法是爬取到数据以后的回调函数,参数response表示爬取到的结果,我们可以对其进行解析拿到网页数据。
解析数据时,默认一次可以拿到30条数据,我们循环遍历这30条数据,构造WwwZhipinComItem对象item,然后调用yield item即可
def parse(self, response):
job_list = response.css('div.job-list > ul > li')
request_data = []
for job in job_list:
item = WwwZhipinComItem()
...
yield item
3、对于爬取的字段定义需要我们修改item.py文件,定义爬取字段如图
4、最后一步写入数据库
首先构造一个conn对象
db_name = 'zhipin_datas_C++'
nowMonth = datetime.datetime.now().month
settings = {
"ip":'127.0.0.1',
"port":27017,
"db_name" : db_name,
"set_name" : "test" 集合名字
conn = my_connect(settings)
指定要插入的集合,然后构造数据、插入数据如图
数据爬取结束后,使用gui工具Navicat 12 for MongoDB可以查看爬取到的数据,效果如图所示