【爬蟲筆記】ONE一個問題及文章爬劝芮纭(二)

ONE一個除了有一個ONE模塊之外浓冒,另外還有ONE 文章,ONE 問題模塊

這篇筆記將會講述如何爬取這兩個模塊。

15年前尖坤,互聯(lián)網(wǎng)是一個逃避現(xiàn)實的地方稳懒;現(xiàn)在,現(xiàn)實是一個可以逃避互聯(lián)網(wǎng)的地方慢味。

From ONE一個

獲得文章鏈接列表

繼續(xù)上篇日記场梆,依舊是利用chorme分析網(wǎng)頁構(gòu)成。

由圖可看出纯路,文章的主要內(nèi)容并不在主頁當中或油,需要點開鏈接跳轉(zhuǎn)得到,我們需要得到每一篇文章的url驰唬,組成文章鏈接列表顶岸,再利用列表鏈接進行文章的爬取。

而通過源代碼定嗓,我們發(fā)現(xiàn)文章的鏈接都在類名為fp-one-articulodiv中蜕琴,于是我們遍歷該div中所有的a標簽,再從標簽中提取url宵溅。

def getArticlelist(page):
    article_list = []
    soup = BeautifulSoup(page, 'html.parser')
    for i in soup.findAll('div',class_ ='fp-one-articulo'):
        for j in i.find_all('a'):
            article_url = j['href']
            article_list.append(article_url)
    return article_list

可以獲得文章鏈接列表:

'http://wufazhuce.com/article/2818', 
'http://wufazhuce.com/article/2819', 
'http://wufazhuce.com/article/2816', 
'http://wufazhuce.com/article/2810', 
'http://wufazhuce.com/article/2808', 
'http://wufazhuce.com/article/2815', 
'http://wufazhuce.com/article/2812'

獲得文章內(nèi)容

既然已經(jīng)獲得文章鏈接列表,接下來我們就需要遍歷列表上炎,對每一個鏈接進行解析恃逻,目標得到文章的作者雏搂,標題,內(nèi)容寇损。

def getArticle(list):
    artlist = []
    for url in list:
        page_article = requests.get(url).content
        soup = BeautifulSoup(page_article, 'html.parser')
        title = soup.find_all('div',class_ = 'one-articulo')[0].h2.text
        autor =  soup.find_all('div',class_ = 'one-articulo')[0].p.text
        article = soup.find_all('div',class_ = 'one-articulo')[0].find_all('div',class_ = 'articulo-contenido')[0].text
        data = {
            'title':title,
            'article':article,
            'autor':autor
        }
        artlist.append(data)
    return artlist

函數(shù)返回包含所有文章的標題凸郑,作者及內(nèi)容的字典格式


問題模塊

問題模塊與上面文章模塊沒有明顯差別,依舊先得到urllist矛市,再對每一個url進行爬取芙沥。

def getQuestionlist(page):
    question_list = []
    soup = BeautifulSoup(page, 'html.parser')
    for i in soup.findAll('div',class_ ='fp-one-cuestion'):
        for j in i.find_all('a'):
            question_url = j['href']
            question_list.append(question_url)
    return question_list
    
def getQuestion(list):
    queslist = []
    for url in list:
        page_article = requests.get(url).content
        soup = BeautifulSoup(page_article, 'html.parser')
        question_title = soup.find_all('div',class_ = 'one-cuestion')[0].h4.text
        question_brief = soup.find_all('div',class_ = 'cuestion-contenido')[0].text
        question_content = soup.find_all('div',class_ = 'cuestion-contenido')[1].text
        data = {
            'ques_title':question_title,
            'ques_brief':question_brief,
            'ques_content':question_content
        }
        queslist.append(data)
    return queslist

集合字典

上文中,我們分別獲得了ONE模塊浊吏,ONE 文章模塊,ONE 問題模塊的字典列表,那么我們?nèi)绾螌⑷齻€字典集合為一個字典對象呢而昨?

for one,art,ques in zip(one_dict,article_dict,question_dict):
    dic = {}
    dic.update(one)
    dic.update(art)
    dic.update(ques)
    dict_list.append(dic)
for dict in dict_list:
    for key in dict:
        print key, ':', dict[key]  

我們就獲得最終的dict_list數(shù)據(jù)列表。

源碼

#!/usr/bin/python
# -*- coding: utf-8 -*-

import requests
from bs4 import BeautifulSoup

def getPage(url):
    return requests.get(url).content

def getOne(page):
    list = []
    soup = BeautifulSoup(page, 'html.parser')
    for i in soup.find_all('div',class_ = 'item'):
        # image = i.a.img['src']
        onelist = i.find_all('a')
        image = onelist[0].img['src']
        word = onelist[1].text
        infolist = i.find_all('p')
        id = infolist[0].text
        date = infolist[1].text+' '+infolist[2].text
        data = {
            'image':image,
            'word':word,
            'id':id,
            'date':date
        }
        list.append(data)
    return list

def getArticlelist(page):
    article_list = []
    soup = BeautifulSoup(page, 'html.parser')
    for i in soup.findAll('div',class_ ='fp-one-articulo'):
        for j in i.find_all('a'):
            article_url = j['href']
            article_list.append(article_url)
    return article_list

def getQuestionlist(page):
    question_list = []
    soup = BeautifulSoup(page, 'html.parser')
    for i in soup.findAll('div',class_ ='fp-one-cuestion'):
        for j in i.find_all('a'):
            question_url = j['href']
            question_list.append(question_url)
    return question_list

def getArticle(list):
    artlist = []
    for url in list:
        page_article = requests.get(url).content
        soup = BeautifulSoup(page_article, 'html.parser')
        title = soup.find_all('div',class_ = 'one-articulo')[0].h2.text
        autor =  soup.find_all('div',class_ = 'one-articulo')[0].p.text
        article = soup.find_all('div',class_ = 'one-articulo')[0].find_all('div',class_ = 'articulo-contenido')[0].text
        data = {
            'title':title,
            'article':article,
            'autor':autor
        }
        artlist.append(data)
    return artlist

def getQuestion(list):
    queslist = []
    for url in list:
        page_article = requests.get(url).content
        soup = BeautifulSoup(page_article, 'html.parser')
        question_title = soup.find_all('div',class_ = 'one-cuestion')[0].h4.text
        question_brief = soup.find_all('div',class_ = 'cuestion-contenido')[0].text
        question_content = soup.find_all('div',class_ = 'cuestion-contenido')[1].text
        data = {
            'ques_title':question_title,
            'ques_brief':question_brief,
            'ques_content':question_content
        }
        queslist.append(data)
    return queslist


if __name__ == '__main__':
    url = "http://www.wufazhuce.com/"
    dict_list = []
    one_page = getPage(url)
    one_dict = getOne(one_page)
    article_list = getArticlelist(one_page)
    article_dict = getArticle(article_list)
    question_list = getQuestionlist(one_page)
    question_dict = getQuestion(question_list)
    for one,art,ques in zip(one_dict,article_dict,question_dict):
        dic = {}
        dic.update(one)
        dic.update(art)
        dic.update(ques)
        dict_list.append(dic)
    for dict in dict_list:
        for key in dict:
            print key, ':', dict[key]

問題

雖然解決了模塊內(nèi)容問題找田,但是數(shù)據(jù)少依舊是一個問題歌憨。ONE一個網(wǎng)站只開放了七天的數(shù)據(jù),如何獲得更多的數(shù)據(jù)墩衙,甚至是一年的數(shù)據(jù)呢务嫡?這么大的數(shù)據(jù)如何保存呢?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漆改,一起剝皮案震驚了整個濱河市心铃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挫剑,老刑警劉巖于个,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異暮顺,居然都是意外死亡厅篓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門捶码,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羽氮,“玉大人,你說我怎么就攤上這事惫恼〉笛海” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵祈纯,是天一觀的道長令宿。 經(jīng)常有香客問我,道長腕窥,這世上最難降的妖魔是什么粒没? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮簇爆,結(jié)果婚禮上癞松,老公的妹妹穿的比我還像新娘爽撒。我一直安慰自己,他們只是感情好响蓉,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布硕勿。 她就那樣靜靜地躺著,像睡著了一般枫甲。 火紅的嫁衣襯著肌膚如雪源武。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天想幻,我揣著相機與錄音粱栖,去河邊找鬼。 笑死举畸,一個胖子當著我的面吹牛查排,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抄沮,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼跋核,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叛买?” 一聲冷哼從身側(cè)響起砂代,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎率挣,沒想到半個月后刻伊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡椒功,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年捶箱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片动漾。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡丁屎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旱眯,到底是詐尸還是另有隱情晨川,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布删豺,位于F島的核電站共虑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏呀页。R本人自食惡果不足惜妈拌,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赔桌。 院中可真熱鬧供炎,春花似錦渴逻、人聲如沸疾党。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雪位。三九已至竭钝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雹洗,已是汗流浹背香罐。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留时肿,地道東北人庇茫。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像螃成,于是被迫代替她去往敵國和親旦签。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

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