Python爬蟲構(gòu)建

1.環(huán)境搭建

1.1 虛擬機安裝

豆瓣源安裝提速:
pip install -i https://pypi.doubanio.com/simple **

  • step.1 安裝虛擬機
    pip install virtualenv
  • step.2 安裝虛擬機管理工具
    pip install virtualenvwrapper / virtualenvwrapper-win 【windows環(huán)境下】

1.2 配置虛擬環(huán)境

  • Windows環(huán)境下
    • step.1 配置環(huán)境變量
      添加WORKON_HOME系統(tǒng)變量配置路徑為虛擬機所在位置
    • step.2 創(chuàng)建虛擬機
      mkvirtualenv 【虛擬機名稱】 或指定python版本創(chuàng)建 mkvirtualenv -p=【Python安裝路徑】 【虛擬機名稱】
  • Linux環(huán)境下
    • step.1 查找virtualenvwrapper
      sudo find / -name virtualenvwrapper.sh
    • step.2 配置環(huán)境變量
      vim ~/.bashrc
      添加
      WORKON_HOME=$HOME/.virtualenvs
      source */*/virtualenvwrapper.sh
    • step.2 創(chuàng)建虛擬機
      mkvirtualenv --python=【Python安裝路徑】 【名稱】
  • 共用命令
    • 退出虛擬環(huán)境 deactivate
    • 查看虛擬機列表 workon
    • 進入虛擬機 workon 【名稱】

2.爬蟲項目

2.1 創(chuàng)建并進入虛擬機

mkvirtualenv --python=/usr/bin/python3 py3scrapy

2.2 安裝框架

使用豆瓣源安裝scrapy
pip install -i https://pypi.doubanio.com/simple scrapy

若報import錯誤:

  1. 進入 https://www.lfd.uci.edu/~gohlke/pythonlibs/
  2. 查找所缺失的包并下載
  3. 安裝 pip install *.whl

2.3 創(chuàng)建Scrapy工程

  1. 進入虛擬環(huán)境 workon py3scrapy
  2. 創(chuàng)建工程 scrapy startproject articleSpider
  3. 生成模版 scrapy genspider hbut hbut.91wllm.com

生成項目結(jié)構(gòu)如下:


目錄結(jié)構(gòu).png

3.自動運行

3.1 使用Timer

首先在scrapy.cfg同級目錄下新建main.py

import os
from scrapy.cmdline import execute
import sys
import schedule
import time

sys.path.append(os.path.dirname(os.path.abspath(__file__)))

//使用timer
 while True:
    os.system("scrapy crawl hbut")
    time.sleep(60) //每60秒運行一次

3.2 使用Schedule

  • 安裝Schedule pip install -i https://pypi.doubanio.com/simple schedule
  • 修改main.py如下:
import os
from scrapy.cmdline import execute
import sys
import schedule
import time

sys.path.append(os.path.dirname(os.path.abspath(__file__)))

//使用schedule 需安裝
 def job():
     print("I'm working...")
     os.system("scrapy crawl hbut")

// 每10分鐘執(zhí)行
 schedule.every(10).minutes.do(job)
// 每一小時執(zhí)行
schedule.every().hour.do(job)
// 每天15:58分執(zhí)行
 schedule.every().day.at("15:58").do(job)
// 每周一的當前時間執(zhí)行
 schedule.every().monday.do(job)
// 每周三13:15執(zhí)行
 schedule.every().wednesday.at("13:15").do(job);

 while True:
     schedule.run_pending()
     time.sleep(1)

3.3 使用Crontab

  • 編寫要執(zhí)行的命令腳本cron.sh
#! /bin/sh          
export PATH=$PATH:/usr/local/bin
cd /home/testCron
nohup scrapy crawl example >> example.log 2>&1 &
  • 執(zhí)行阎肝,crontab -e效拭,規(guī)定crontab要執(zhí)行的命令和要執(zhí)行的時間頻率,這里我需要每一分鐘就執(zhí)行scrapy crawl example這條爬取命令:
    */1 * * * * sh /home/testCron/cron.sh
  • 使用main.py,執(zhí)行命令:
    */1 * * * * python /home/articleSpider/main.py

crontab的常見格式:


crontab格式.png

4.運行所有爬蟲

1.在spiders目錄的同級目錄下創(chuàng)建一個commands目錄,并在該目錄中創(chuàng)建一個crawlall.py,將scrapy源代碼里的commands文件夾里的crawl.py源碼復制過來,只修改run()方法即可:

def run(self, args, opts):
        # 獲取爬蟲列表
        spd_loader_list = self.crawler_process.spider_loader.list()
        print(spd_loader_list)

        # 遍歷爬蟲
        for name in spd_loader_list or args:
            self.crawler_process.crawl(name, **opts.spargs)
            print(name)

        self.crawler_process.start()

還得在里面加個init.py文件,目錄結(jié)構(gòu)如下:

目錄結(jié)構(gòu).png

  1. settings.py配置文件還需要加一條龟梦。

COMMANDS_MODULE = '項目名稱.目錄名稱'

COMMANDS_MODULE='articleSpider.commands'
  1. 執(zhí)行
cmdline.execute("scrapy crawlall".split())
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窃躲,隨后出現(xiàn)的幾起案子计贰,更是在濱河造成了極大的恐慌,老刑警劉巖蒂窒,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躁倒,死亡現(xiàn)場離奇詭異赎婚,居然都是意外死亡,警方通過查閱死者的電腦和手機樱溉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門挣输,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人福贞,你說我怎么就攤上這事撩嚼。” “怎么了挖帘?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵完丽,是天一觀的道長。 經(jīng)常有香客問我拇舀,道長逻族,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任骄崩,我火速辦了婚禮聘鳞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘要拂。我一直安慰自己抠璃,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布脱惰。 她就那樣靜靜地躺著搏嗡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拉一。 梳的紋絲不亂的頭發(fā)上采盒,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音蔚润,去河邊找鬼磅氨。 笑死,一個胖子當著我的面吹牛抽碌,可吹牛的內(nèi)容都是我干的悍赢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼货徙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了皮胡?” 一聲冷哼從身側(cè)響起痴颊,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屡贺,沒想到半個月后蠢棱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锌杀,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年泻仙,在試婚紗的時候發(fā)現(xiàn)自己被綠了糕再。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡玉转,死狀恐怖突想,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情究抓,我是刑警寧澤猾担,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站刺下,受9級特大地震影響绑嘹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜橘茉,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一工腋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畅卓,春花似錦夷蚊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唐础,卻和暖如春箱歧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背一膨。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工呀邢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豹绪。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓价淌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瞒津。 傳聞我的和親對象是個殘疾皇子蝉衣,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容