第二節(jié)練習(xí)項(xiàng)目詳解:爬取手機(jī)號(hào)

爬蟲實(shí)戰(zhàn)第四天

任務(wù)

爬取58同城北京地區(qū)手機(jī)號(hào)頁(yè)面 http://bj.58.com/shoujihao/

成果

爬取3000余條手機(jī)號(hào)的交易信息慎王,并保存到本地?cái)?shù)據(jù)庫(kù)

源碼

import requests
import time
from pymongo import MongoClient
from bs4 import BeautifulSoup
from multiprocessing import Pool
from threading import Thread

# 創(chuàng)建tong_cheng數(shù)據(jù)庫(kù),并在該數(shù)據(jù)庫(kù)下面建立兩個(gè)collection保存鏈接和詳情
client = MongoClient('localhost', 27017)
tong_cheng = client['tong_cheng']
shoujihao_links = tong_cheng['shoujihao_links']
shoujihao_info = tong_cheng['shoujihao_info']


# spider 1 提取標(biāo)題和鏈接
def get_links(page):
    wb_data = requests.get(page)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    titles = soup.select('#infolist > div > ul > div > ul > li > a.t > strong')
    links = soup.select('#infolist > div > ul > div > ul > li > a.t')
    for title, link in zip(titles, links):
        title = title.get_text()
        link = link['href']
        data = {'標(biāo)題': title, '鏈接': link}
        shoujihao_links.insert_one(data)
        # print(data)


# spider 2 提取對(duì)應(yīng)link的頁(yè)面詳情
def get_info(link):
    wb_data = requests.get(link)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    data = {
        '鏈接': link,
        # 找到標(biāo)題并處理字符串中的換行符稿黄、制表符和空格
        '標(biāo)題': soup.select('#main > div.col.detailPrimary.mb15 > div.col_sub.mainTitle > h1')[0].get_text().replace('\n', '').replace('\t', '').replace(' ', ''),
        '價(jià)格': soup.select('#main > div.col.detailPrimary.mb15 > div.col_sub.sumary > ul > li > div.su_con > span')[0].get_text().replace('\n', '').replace('\t', '').replace(' ', '')
    }
    shoujihao_info.insert_one(data)
    # print(data)


# 查詢數(shù)據(jù)庫(kù)中sheet表單中的數(shù)據(jù)量
def count():
    while True:
        # .find().count()不要忘了.count()
        print('Saved links:%s\nSaved items:%s\n---------------' % (shoujihao_links.find().count(), shoujihao_info.find().count()))
        time.sleep(5)


# 運(yùn)行計(jì)數(shù)函數(shù)和查詢函數(shù)(多進(jìn)程和多線程)
def main(pages):
    # 開啟線程t,運(yùn)行計(jì)數(shù)程序
    t = Thread(target=count)
    t.daemon = True
    t.start()
    # 主線程,第一步保存pages中的頁(yè)面信息枢贿,包括標(biāo)題和鏈接贱案;
    pool = Pool()
    pool.map(get_links, pages)
    # 主線程,第二步從數(shù)據(jù)中找到鏈接列表并得到頁(yè)面詳情
    pool.map(get_info, [link['鏈接'] for link in shoujihao_links.find()])


pages = ['http://bj.58.com/shoujihao/pn{}/'.format(str(i)) for i in range(1, 111)]

if __name__ == '__main__':
    main(pages)

小結(jié)

  • 多進(jìn)程可顯著提高爬蟲效率惊橱,多了解多進(jìn)程蚪腐、多線程相關(guān)知識(shí)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末税朴,一起剝皮案震驚了整個(gè)濱河市回季,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌正林,老刑警劉巖泡一,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異觅廓,居然都是意外死亡鼻忠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門杈绸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帖蔓,“玉大人,你說我怎么就攤上這事瞳脓√肿瑁” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵篡殷,是天一觀的道長(zhǎng)钝吮。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么奇瘦? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任棘催,我火速辦了婚禮,結(jié)果婚禮上耳标,老公的妹妹穿的比我還像新娘醇坝。我一直安慰自己,他們只是感情好次坡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布呼猪。 她就那樣靜靜地躺著,像睡著了一般砸琅。 火紅的嫁衣襯著肌膚如雪宋距。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天症脂,我揣著相機(jī)與錄音谚赎,去河邊找鬼。 笑死诱篷,一個(gè)胖子當(dāng)著我的面吹牛壶唤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播棕所,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼闸盔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了琳省?” 一聲冷哼從身側(cè)響起迎吵,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岛啸,沒想到半個(gè)月后钓觉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坚踩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年荡灾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞬铸。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡批幌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗓节,到底是詐尸還是另有隱情荧缘,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布拦宣,位于F島的核電站截粗,受9級(jí)特大地震影響信姓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绸罗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一意推、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珊蟀,春花似錦菊值、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至磅崭,卻和暖如春儿子,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绽诚。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工典徊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杭煎,地道東北人恩够。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像羡铲,于是被迫代替她去往敵國(guó)和親蜂桶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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