Scrapy框架三大优点:
- Scrapy框架是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。
- 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
- Scrapy 可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。
scrapy实现流程图:
scrapy各个模块简单介绍:
步骤:
1.打开pycharm3.6
2.打开terminal命令行输入’scrapy startproject 项目名’,就会建立一个scrapy项目的文件夹
3.建立scrapy主程序,爬虫主要过程都在这里实现,同样在命令行输入’scrapy crawl -t 文件夹名 url’这里url是要爬取的网址,黏贴进去,就会建立一个模板。
4.打开刚建立的py文件,填入网址,这里以51job为例
代码如下:
from scrapy.spider import CrawlSpider
from scrapy.selector import Selector
from ..items import Job51Item
from scrapy.http import Request
import re
from copy import deepcopy
class Job51(CrawlSpider):
name = 'job51'#与建立的py文件名相同
url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,%25E4%25BA%25BA%25E5%25B7%25A5%25E6%2599%25BA%25E8%2583%25BD,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
start_urls = [url]
#可以不用去设置settings文件,直接指定管道文件
# custom_settings = {
# 'ITEM_PIPELINES' : {
# # 'job51.pipelines.Job51Pipeline': 300,
# 'job51.pipelines.saveToJson': 310
# #'job51.pipelines.saveToMongoDB': 320
# }
# }
# 定义一个计数变量
times = 0
def parse(self, response):
self.times+=1
#response是下载器下载的网页内容
selector = Selector(response)#创建selector对象
item=Job51Item()
parent = selector.xpath('//div[@id="resultList"]//div[@class="el"]')
#print(parent)
for each in parent:
#获取职位信息
jobname = each.xpath('./p/span/a/@title').extract()
jobsrc = each.xpath('./p/span/a/@href').extract()[0]
companyname = each.xpath('./span[1]/a/text()').extract()
address = each.xpath('./span[2]/text()').extract()
money = each.xpath('./span[3]/text()').extract()
ptime = each.xpath('./span[4]/text()').extract()
#print(jobname,companyname,address,money,ptime)
if money:
money=money[0]
else:
money='面谈'
item['jobname']=jobname[0]
item['companyname']=companyname[0]
item['address']=address[0]
item['mone