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閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容

  • scrapy學習筆記(有示例版) 我的博客 scrapy學習筆記1.使用scrapy1.1創建工程1.2創建爬蟲模...
    陳思煜閱讀 12,748評論 4 46
  • scrapy源碼https://github.com/scrapy/scrapy/tree/master/scra...
    木魚非魚閱讀 848評論 0 1
  • 春天到來時,讀完三本書,《茶的故事》、《無盡綠》、《山居歲月》。 剛跟小盆友聊起延伸閱讀,就拿自己將這三本書一起讀...
    壹貳閱讀 673評論 0 0
  • 鄉村文化孕育成長 要回想腦海中最早記事是什么時候、什么事情,恐怕還真是記不得。我一直在盡力回想,自己是怎么來到這個...
    匠人致遠閱讀 299評論 2 1
  • 午后天空,一如牛奶藍,一鋪如洗。一大坨一大坨棉花糖的云朵掛在那里,不經意的輕盈,賞心悅目。想念清爽的抹茶,酥酥的曲...
    孫大圣獅子王閱讀 443評論 0 3