pythonscrapy分布式爬取boss直聘信息 scarpyd 部署scrapy 并进行数据可视化

需要准备 redis mongodb scrapy-redis  这些自己百度安装 

1.对要爬取的页面进行分析。。。因爬取时候没使用代理现在ip已经被屏蔽 所以明天进行分析 今天上代码

代码分析 这是没有使用redis的爬虫 

没有使用redis的爬虫代码

# -*- coding: utf-8 -*-

importscrapy

fromscrapy.httpimportRequest

frombooszp.itemsimportBooszpItem

#from scrapy_redis.spiders import RedisSpider

classBoosSpider(RedisSpider):

name ="boos"

#  redis_key='boos:start_urls'

start_urls = ['http://www.zhipin.com/job_detail/?query=php&scity=100010000&source=1']

allowed_domains = ["www.zhipin.com"]

# def start_requests(self):

#for url in self.start_urls:

# yield Request(url=url,callback=self.parse)

defparse(self,response):

lianjie =response.xpath('//div[@class="job-primary"]')

fordizhiinlianjie:

item = BooszpItem()

item['name'] = dizhi.xpath('./div[@class="info-primary"]/h3[@class="name"]/text()').extract()

item['xinzi']= dizhi.xpath('./div[@class="info-primary"]/h3[@class="name"]/span[@class="red"]/text()').extract()

item['dizhi']= dizhi.xpath('./div[@class="info-primary"]/p/text()').extract()

item['gongsi']=dizhi.xpath('./div[@class="info-company"]/div[@class="company-text"]/h3[@class="name"]/text()').extract()

yielditem

jj = response.xpath('//div[@class="page"]/a/@href').extract()[-1]

ifjj !='javascript:;':

ff ='http://www.zhipin.com/'+jj

yieldRequest(url=ff,callback=self.parse,dont_filter = True)



item

# -*- coding: utf-8 -*-

importscrapy

fromscrapy.httpimportRequest

frombooszp.itemsimportBooszpItem

fromscrapy_redis.spidersimportRedisSpider

classBoosSpider(RedisSpider):

name ="boos"

redis_key='boos:start_urls'

#    start_urls = ['http://www.zhipin.com/job_detail/?query=php&scity=100010000&source=1']

allowed_domains = ["www.zhipin.com"]

defstart_requests(self):

forurlinself.start_urls:

yieldRequest(url=url,callback=self.parse)

defparse(self,response):

lianjie =response.xpath('//div[@class="job-primary"]')

fordizhiinlianjie:

item = BooszpItem()

item['name'] = dizhi.xpath('./div[@class="info-primary"]/h3[@class="name"]/text()').extract()

item['xinzi']= dizhi.xpath('./div[@class="info-primary"]/h3[@class="name"]/span[@class="red"]/text()').extract()

item['dizhi']= dizhi.xpath('./div[@class="info-primary"]/p/text()').extract()

item['gongsi']=dizhi.xpath('./div[@class="info-company"]/div[@class="company-text"]/h3[@class="name"]/text()').extract()

yielditem

jj = response.xpath('//div[@class="page"]/a/@href').extract()[-1]

ifjj !='javascript:;':

ff ='http://www.zhipin.com/'+jj

yieldRequest(url=ff,callback=self.parse,dont_filter = True)

importscrapy

classBooszpItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

name =scrapy.Field()

xinzi=scrapy.Field()

dizhi =scrapy.Field()

jingyan=scrapy.Field()

dengji=scrapy.Field()

gongsi=scrapy.Field()




from scrapy importsignals

import random

from scrapy.confimportsettings

classUAMiddleware(object):

user_agent_list = settings['USER_AGENT_LIST']

defprocess_request(self,request,spider):

ua = random.choice(self.user_agent_list)

request.headers['User-Agent'] = ua

classProxyMiddleware(object):

ip_list = settings['IP_LIST']

defprocess_request(self,request,spider):

ip = random.choice(self.ip_list)

printip

request.meta['proxy'] = ip

settings.py

DOWNLOADER_MIDDLEWARES = {

'booszp.middlewares.UAMiddleware':543,#获取middlewares 的user

'booszp.middlewares.ProxyMiddleware':544,#获取 ip代理

}

ITEM_PIPELINES = {

'booszp.pipelines.BooszpPipeline':300,

#'scrapy_redis.pipelines.RedisPipeline':301

}

SCHEDULER ="scrapy_redis.scheduler.Scheduler"#首先是Scheduler的替换,

# 这个东西是Scrapy中的调度员

DUPEFILTER_CLASS ="scrapy_redis.dupefilter.RFPDupeFilter"#去重

SCHEDULER_PERSIST = False

#如果这一项为True,那么在Redis中的URL不会被Scrapy_redis清理掉,

# 这样的好处是:爬虫停止了再重新启动,它会从上次暂停的地方开始继续爬取

# 。但是它的弊端也很明显,如果有多个爬虫都要从这里读取URL,需要另外写一段代码来防止重复爬取。

#如果设置成了False,那么Scrapy_redis每一次读取了URL以后,就会把这个URL给删除。

# 这样的好处是:多个服务器的爬虫不会拿到同一个URL,也就不会重复爬取。但弊端是:爬虫暂停以后再重新启动,它会重新开始爬。

SCHEDULER_QUEUE_CLASS ='scrapy_redis.queue.SpiderQueue'

#爬虫请求的调度算法

USER_AGENT_LIST = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1',

'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36',

'Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11']

IP_LIST = ['http://122.226.62.90:3128',#代理ip

'http://101.200.40.47:3128',

'http://84.52.115.139:8080']

REDIS_HOST ='127.0.0.1'#修改为Redis的实际IP地址

REDIS_PORT =6379#修改为Redis的实际端口

MONGODB_HOST='127.0.0.1'# mongodb

MONGODB_POST =27017

MONGODB_DBNAME='boos'

MONGODB_DOCNAME='boos3'

importpymongo

fromscrapy.confimportsettings

classBooszpPipeline(object):

def__init__(self):

client = pymongo.MongoClient()

db = client[settings['MONGODB_DBNAME']]

self.post = db[settings['MONGODB_DOCNAME']]

defprocess_item(self,item,spider):

book_info =dict(item)

self.post.insert(book_info)

returnitem

然后启动redis 喂链接就可以了

启动爬虫就行了 

然后使用scrapyd 进行项目部署


启动 scrapyd 


在重新打开cmd


curl http://localhost:6800/listprojects.json 查看爬虫信息


curl http://localhost:6800/schedule.json -d project=booszp -d spider=boos

启动爬虫

在浏览器输入localhost:6500



然后去redis 喂条url


然后就可以看到爬取的数据了

如有问题请留言

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,601评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,367评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,249评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,539评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,967评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,929评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,098评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,825评论 0 207
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,609评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,796评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,282评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,603评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,277评论 3 242
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,159评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,959评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,079评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,874评论 2 277

推荐阅读更多精彩内容

  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,589评论 4 46
  • scrapy源码https://github.com/scrapy/scrapy/tree/master/scra...
    木鱼非鱼阅读 771评论 0 1
  • 春天到来时,读完三本书,《茶的故事》、《无尽绿》、《山居岁月》。 刚跟小盆友聊起延伸阅读,就拿自己将这三本书一起读...
    壹貳阅读 626评论 0 0
  • 乡村文化孕育成长 要回想脑海中最早记事是什么时候、什么事情,恐怕还真是记不得。我一直在尽力回想,自己是怎么来到这个...
    匠人致远阅读 269评论 2 1
  • 午后天空,一如牛奶蓝,一铺如洗。一大坨一大坨棉花糖的云朵挂在那里,不经意的轻盈,赏心悦目。想念清爽的抹茶,酥酥的曲...
    孙大圣狮子王阅读 404评论 0 3