成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于Redis的簡單分布式爬蟲

zqhxuyuan / 2215人閱讀

摘要:建議先大概瀏覽一下項(xiàng)目結(jié)構(gòu)項(xiàng)目介紹新手向,基于構(gòu)建的分布式爬蟲。以爬取考研網(wǎng)的貼子為例,利用進(jìn)行解析,將符合要求的文章文本存入數(shù)據(jù)庫中。項(xiàng)目地址有任何問題可以與我聯(lián)系微信

Ugly-Distributed-Crawler

建議先大概瀏覽一下項(xiàng)目結(jié)構(gòu)

項(xiàng)目介紹

新手向,基于Redis構(gòu)建的分布式爬蟲。
以爬取考研網(wǎng)的貼子為例,利用 PyQuery, lxml 進(jìn)行解析,將符合要求的文章文本存入MySQ數(shù)據(jù)庫中。

結(jié)構(gòu)簡介 cooperator

協(xié)作模塊,用于為Master&Worker模塊提供代理IP支持

master

提取滿足條件的文章url,并交給Worker進(jìn)一步處理

worker

解析文章內(nèi)容,將符合要求的存入數(shù)據(jù)庫

環(huán)境依賴

sqlalchemy => 1.0.13
pyquery => 1.2.17
requests => 2.12.3
redis => 2.10.5
lxml => 3.6.0

需要預(yù)先安裝MySQL-server 和 Redis-server.

MySQL中應(yīng)有名為kybsrc的數(shù)據(jù)庫,且該數(shù)據(jù)庫包含一個(gè)名為posts的表,擁有num(INT AUTO_INCREMENT)和post(TEXT)兩個(gè)字段。

如何啟動(dòng) 0. 先配置好各模塊所引用的配置文件 1. 為了更好地運(yùn)行,cooperator/start.py 應(yīng)提前開始并完成一次工作函數(shù)執(zhí)行

第一次執(zhí)行完后,每五分鐘運(yùn)行一次工作函數(shù)

2. 啟動(dòng) master/start.py

默認(rèn)只執(zhí)行一次

3. 啟動(dòng) worker/start.py

默認(rèn)循環(huán)監(jiān)聽是否有新的URL待解析

核心點(diǎn)說明 1. 通過Redis的集合類型進(jìn)行代理IP和URL的傳遞
# Summary Reference
# ---------
# 創(chuàng)建句柄
def make_redis_handler():
    pool = redis.ConnectionPool(host=r_server["ip"], port=r_server["port"], password=r_server["passwd"])
    return redis.Redis(connection_pool=pool)

# 獲得句柄
def make_proxy_handler():
    return make_redis_handler()

# 保存到指定的set下
def check_and_save(self, proxy):
 "pass"
   self.redis_handler.sadd(r_server["s_name"], proxy)
2. 由于在驗(yàn)證代理IP和使用封裝的get_url()函數(shù)的時(shí)候網(wǎng)絡(luò)IO較多,所以使用多線程(效果還是很明顯的)。
#Summary Reference
#---------
def save_proxy_ip(self):
    "pass"
    for proxy in self.proxy_ip:
        Thread(target=self.check_and_save, args=(proxy,)).start()

def get_url(url):
    "pass"
    while True:
    "pass"
        resp = request("get", url, headers=headers, proxies={"http": proxy})
    "pass"
項(xiàng)目地址 https://github.com/A101428020...

有任何問題可以與我聯(lián)系(微信:smartseer)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38568.html

相關(guān)文章

  • 從0-1打造最強(qiáng)性能Scrapy爬蟲集群

    摘要:包括爬蟲編寫爬蟲避禁動(dòng)態(tài)網(wǎng)頁數(shù)據(jù)抓取部署分布式爬蟲系統(tǒng)監(jiān)測共六個(gè)內(nèi)容,結(jié)合實(shí)際定向抓取騰訊新聞數(shù)據(jù),通過測試檢驗(yàn)系統(tǒng)性能。 1 項(xiàng)目介紹 本項(xiàng)目的主要內(nèi)容是分布式網(wǎng)絡(luò)新聞抓取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。主要有以下幾個(gè)部分來介紹: (1)深入分析網(wǎng)絡(luò)新聞爬蟲的特點(diǎn),設(shè)計(jì)了分布式網(wǎng)絡(luò)新聞抓取系統(tǒng)爬取策略、抓取字段、動(dòng)態(tài)網(wǎng)頁抓取方法、分布式結(jié)構(gòu)、系統(tǒng)監(jiān)測和數(shù)據(jù)存儲(chǔ)六個(gè)關(guān)鍵功能。 (2)結(jié)合程序代碼分解說...

    vincent_xyb 評論0 收藏0
  • 布式爬蟲原理

    分布式爬蟲原理 什么是分布式爬蟲: 額,這個(gè)問題呢,我這樣解釋,例如爬取網(wǎng)站內(nèi)的二級網(wǎng)站,我們就需要獲取網(wǎng)站中的二級、三級...很多個(gè)網(wǎng)站,那么我們?nèi)绻米约阂慌_(tái)主機(jī)爬取明顯效率很低,這個(gè)時(shí)候我們就需要其他主機(jī)的幫助了,這個(gè)時(shí)候我們就將作為Master,為其他主機(jī)Slaver提供url的同時(shí),啟動(dòng)程序,沒錯(cuò),我們的工作就這么多,而Slaver主機(jī)的作用就是接收url,解析并獲取想要的數(shù)據(jù)。。...

    LeexMuller 評論0 收藏0
  • scrapy-redis布式爬蟲框架詳解

    摘要:分布式爬蟲框架詳解隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會(huì)大眾參與社會(huì)生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請求及響應(yīng)。 scrapy-redis分布式爬蟲框架詳解 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會(huì)大眾參與社會(huì)生活的一種重要信息渠道。由于互聯(lián)網(wǎng)是開放的,每個(gè)人都可以在網(wǎng)絡(luò)上...

    myeveryheart 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<