七. 正則實戰(zhàn) - 爬小說和段子

任務(wù)1

爬取網(wǎng)址:http://www.doupoxs.com/doupocangqiong
爬取內(nèi)容:斗破蒼穹的各章節(jié)正文
爬取方式:正則表達(dá)式 & BeautifulSoup(get_info2(url)完箩,選用)

import requests
from bs4 import BeautifulSoup
import re
import time

base_url = "http://www.doupoxs.com/doupocangqiong"
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3294.6 Safari/537.36'}
r = requests.get(base_url, headers = headers)
soup = BeautifulSoup(r.text,"lxml")

def get_url():
    detail_urls = soup.select("div.book_list a")
    url_list = []
    for url in detail_urls:
        detail_url = url.get("href")
        all_url = "http://www.doupoxs.com" + detail_url
        url_list.append(all_url)
    return url_list

##正則表達(dá)式
def get_info(url):
    r = requests.get(url,headers = headers)
    dpcp_texts = re.findall('<p>(.*?)</p>',r.content.decode('utf-8'),re.S)
    for dpcp_text in dpcp_texts:
        f.write(dpcp_text + '\n')

##BeautifulSoup
def get_info2(url):
    r = requests.get(url,headers = headers)
    soup = BeautifulSoup(r.content,"lxml")
    infos = soup.select("div.read_chapterDetail p")
    for info in infos:
        dpcq_text = info.text
        f.write(dpcp_text + '\n')
    

if __name__ == "__main__":
    url_list = get_url()
    f = open("F:/doupo.txt",'a+')
    for url in url_list:
        get_info(url)
        time.sleep(1)
    f.close()

部分結(jié)果為:

天才一秒記住本站網(wǎng)站 www.doupoxs.com 中間是<span style="color:blue">斗破 拼音+小說 首字母</span> 連起來就是斗破小說讽膏,喜歡我就記住我吧!
第一章隕落的天才
&ldquo;斗之力氯葬,三段!&rdquo;
望著測驗?zāi)厦骈W亮得甚至有些刺眼的五個大字,少年面無表情捅暴,唇角有著一抹自嘲恬砂,緊握的手掌,因為大力蓬痒,而導(dǎo)致略微尖銳的指甲深深的刺進(jìn)了掌心之中泻骤,帶來一陣陣鉆心的疼痛&hellip;
&ldquo;蕭炎,斗之力梧奢,三段!級別:低級!&rdquo;測驗?zāi)杂啵晃恢心昴凶樱戳艘谎郾纤@示出來的信息亲轨,語氣漠然的將之公布了出來&hellip;
中年男子話剛剛脫口趋惨,便是不出意外的在人頭洶涌的廣場上帶起了一陣嘲諷的騷動。
&ldquo;三段?嘿嘿惦蚊,果然不出我所料器虾,這個&ldquo;天才&rdquo;這一年又是在原地踏步!&rdquo;
&ldquo;哎,這廢物真是把家族的臉都給丟光了蹦锋。&rdquo;
&ldquo;要不是族長是他的父親兆沙,這種廢物,早就被驅(qū)趕出家族莉掂,任其自生自滅了挤悉,哪還有機(jī)會待在家族中白吃白喝。&rdquo;

任務(wù)2

爬取網(wǎng)址:https://www.qiushibaike.com/text/
爬取內(nèi)容:用戶ID巫湘、用戶等級装悲、用戶性別、發(fā)表段子文字信息尚氛、好笑數(shù)量诀诊、評價數(shù)量
爬取方式:正則表達(dá)式 & BeautifulSoup(get_info2(url),選用)

import requests
from bs4 import BeautifulSoup
import re
import time


def get_sex(sex_info):
    if sex_info == "manIcon":
        return "男"
    else:
        return "女"

##正則表達(dá)式
def get_info(url):
    headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3294.6 Safari/537.36'}
    r = requests.get(url, headers = headers)
    print(r.status_code)
    #infos = soup.select("div.article")
    ids = re.findall("<h2>(.*?)</h2>",r.text,re.S)
    try:
        levels = re.findall('<div class="articleGender .*?">(.*?)</div>',r.text,re.S)
        sex_infos = re.findall('<div class="articleGender (.*?)"',r.text,re.S)
    except:
        levels = '未知'
        sex_infos = '未知'
        
    contents = re.findall('<div class="content">.*?<span>(.*?)</span>',r.text,re.S)
    laughs = re.findall('<span class="stats-vote">.*?<i class="number">(.*?)</i>',r.text,re.S)
    comments = re.findall('<span class="stats-comments">.*?<i class="number">(.*?)</i>',r.text,re.S)
    for id,level,sex_info,content,laugh,comment in zip(ids,levels,sex_infos,contents,laughs,comments):
        info = {
            'id':id,
            'level':level,
            'sex':get_sex(sex_info),
            'content':content,
            'laugh':laugh,
            'comment':comment            
            }
        info_lists.append(info)
        #print(info)
    for info_list in info_lists:
        try:
            f.write(info_list['id']+'\n')
            f.write(info_list['level']+'\n')
            f.write(info_list['sex']+'\n')
            f.write(info_list['content']+'\n')
            f.write(info_list['laugh']+'\n')
            f.write(info_list['comment']+'\n\n')
        except UnicodeEncodeError:        ##寫入txt文件時去掉錯誤編碼阅嘶。如果僅打印內(nèi)容不需要此語句
            pass

##BeautifulSoup
def get_info2(url):
    headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3294.6 Safari/537.36'}
    r = requests.get(url, headers = headers)
    print(r.status_code)
    soup = BeautifulSoup(r.text,"lxml")
    infos = soup.select("div.article")
    for info in infos:
        id = info.select("h2")[0].text.strip()
        try:
            level = info.select("div.articleGender")[0].text
            sex_info = info.select("div.articleGender")[0].get("class")[1]
            if sex_info == "womenIcon":
                sex = "女"
            elif sex_info == "manIcon":
                sex = "男"        
        except:
            level = ""
            sex = "未知"
        content = info.select("div.content")[0].text.strip().replace('\u200b','').replace('\xba','')
        laugh = info.select("span.stats-vote i")[0].text
        comment = info.select("span.stats-comments i")[0].text.replace('\u2718','')
        f.write(id +' '+ level +' '+ sex +' '+ content +' '+ laugh +' '+ comment+'\n')
        #print(id,level,sex,content,laugh,comment)

if __name__ == "__main__":
    url_list = ["https://www.qiushibaike.com/text/page/{}/".format(i) for i in range(1,14)]
    info_lists = []
    f = open("F:/qiushibaike.txt",'a+')
    for url in url_list:
        get_info(url)
        time.sleep(1)
    f.close()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末属瓣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子讯柔,更是在濱河造成了極大的恐慌抡蛙,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魂迄,死亡現(xiàn)場離奇詭異粗截,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)捣炬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門熊昌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绽榛,“玉大人,你說我怎么就攤上這事婿屹∶鹈溃” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵昂利,是天一觀的道長届腐。 經(jīng)常有香客問我,道長蜂奸,這世上最難降的妖魔是什么梯捕? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮窝撵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘襟铭。我一直安慰自己碌奉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布寒砖。 她就那樣靜靜地躺著赐劣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哩都。 梳的紋絲不亂的頭發(fā)上魁兼,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機(jī)與錄音漠嵌,去河邊找鬼咐汞。 笑死,一個胖子當(dāng)著我的面吹牛儒鹿,可吹牛的內(nèi)容都是我干的化撕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼约炎,長吁一口氣:“原來是場噩夢啊……” “哼植阴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起圾浅,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤掠手,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狸捕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喷鸽,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年灸拍,在試婚紗的時候發(fā)現(xiàn)自己被綠了魁衙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片报腔。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剖淀,靈堂內(nèi)的尸體忽然破棺而出纯蛾,到底是詐尸還是另有隱情,我是刑警寧澤纵隔,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布翻诉,位于F島的核電站,受9級特大地震影響捌刮,放射性物質(zhì)發(fā)生泄漏碰煌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一绅作、第九天 我趴在偏房一處隱蔽的房頂上張望芦圾。 院中可真熱鬧,春花似錦俄认、人聲如沸个少。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夜焦。三九已至,卻和暖如春岂贩,著一層夾襖步出監(jiān)牢的瞬間茫经,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工萎津, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卸伞,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓锉屈,卻偏偏與公主長得像瞪慧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子部念,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

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