爬取百度貼吧的帖子

要解析下面的 HTML, 提取到 div 中的文本:

<div id="post_content_91765531755" class="d_post_content j_d_post_content  clearfix">            樓主現(xiàn)在iOS10么</div>

定位到 @id 以 post_content 開頭并且 @class為 d_post_content j_d_post_content clearfix 的 div唾琼。

>>> import lxml
>> html = requests.get('http://tieba.baidu.com/p/4609646212')
>>> content = etree.HTML(html.text)
>>> content = content.xpath('//div[starts-with(@id, "post_content") and contains(@class,"d_post_content j_d_post_content  clearfix")]')
  • starts-with(@attr, "xxxx") 函數(shù), 以 xxxx 開頭的 attr 屬性。
  • contains(@attr, "xxxx") 函數(shù), 精確含有值為 xxxx 的屬性瞒御。
  • and, 兩個(gè)函數(shù)都為真時(shí), 則返回過濾后的元素。

爬取百度貼吧里面的帖子, 爬取字段為 「回帖日期」神郊、「回帖人」肴裙、「回帖內(nèi)容」:

# -*- coding:utf-8 -*-

from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import requests
import json

def spider(url):
    # test_url = 'http://tieba.baidu.com/p/4609646212'
    html = requests.get(url)
    selector = etree.HTML(html.text)
    # 獲取每個(gè)內(nèi)容塊
    content_field = selector.xpath('//div[@class="l_post j_l_post l_post_bright  "]')
    reply = {}
    for each_content in content_field:
        reply_info = json.loads(each_content.xpath('@data-field')[0])
        author = reply_info['author']['user_name']
        reply_time = reply_info['content']['date']
        content = each_content.xpath('div[@class="d_post_content_main"]/div/cc/div[starts-with(@id, "post_content") \
                                        and contains(@class,"d_post_content j_d_post_content  clearfix")]')
        #content = each_content.xpath('div[@class="d_post_content_main"]/div/cc/div[@class="d_post_content j_d_post_content  clearfix"]')
        print(author)
        print(reply_time)
        print(content[0].xpath('string(.)').replace(' ', ''))
        print('----------------------------------------------------')
        reply['reply_author'] = author
        reply['reply_content_time'] = reply_time
        reply['reply_content'] = content[0].xpath('string(.)').replace(' ', '')
        savetofile(reply)


def savetofile(dict):
    f.writelines(u'回帖時(shí)間:' + str(dict['reply_content_time']) + "\n")
    f.writelines(u'回貼人:'   + dict['reply_author'] + "\n")
    f.writelines(u'回帖內(nèi)容:' + dict['reply_content'] + "\n")
    f.writelines("\n\n")


if __name__ == '__main__':
    pool = ThreadPool(4) # 使用 4 核 cpu
    page = []
    base_url = 'http://tieba.baidu.com/p/4609646212?pn='
    f = open("result.txt", "a", encoding='utf-8') # 將結(jié)果寫入文件

    [page.append(base_url + str(i)) for i in range(1, 21)]

    result = pool.map(spider, page)
    pool.close()
    pool.join()
    f.close()

注意, 元素的定位一定要精確, 不然會(huì)發(fā)生報(bào)錯(cuò)涌乳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜻懦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子夕晓,更是在濱河造成了極大的恐慌宛乃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異征炼,居然都是意外死亡析既,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門谆奥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眼坏,“玉大人,你說我怎么就攤上這事酸些≡滓耄” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵魄懂,是天一觀的道長(zhǎng)沿侈。 經(jīng)常有香客問我,道長(zhǎng)市栗,這世上最難降的妖魔是什么缀拭? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮肃廓,結(jié)果婚禮上智厌,老公的妹妹穿的比我還像新娘。我一直安慰自己盲赊,他們只是感情好铣鹏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哀蘑,像睡著了一般诚卸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绘迁,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天合溺,我揣著相機(jī)與錄音,去河邊找鬼缀台。 笑死棠赛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膛腐。 我是一名探鬼主播睛约,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哲身!你這毒婦竟也來了辩涝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤勘天,失蹤者是張志新(化名)和其女友劉穎怔揩,沒想到半個(gè)月后捉邢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡商膊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年伏伐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翘狱。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秘案,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出潦匈,到底是詐尸還是另有隱情阱高,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布茬缩,位于F島的核電站赤惊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏凰锡。R本人自食惡果不足惜未舟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掂为。 院中可真熱鬧裕膀,春花似錦、人聲如沸勇哗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欲诺。三九已至抄谐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扰法,已是汗流浹背蛹含。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塞颁,地道東北人浦箱。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像祠锣,于是被迫代替她去往敵國和親酷窥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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

  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式锤岸。設(shè)計(jì)者無需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性竖幔。 1....
    LaBaby_閱讀 1,330評(píng)論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式板乙。設(shè)計(jì)者無需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性是偷。 1....
    LaBaby_閱讀 1,167評(píng)論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案拳氢? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)蛋铆,斷路器馋评,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 第一章 入門 基本功能:訪問和操作 dom 元素,控制頁面樣式刺啦,對(duì)頁面的事件處理留特,與ajax完美結(jié)合,有豐富的插件...
    X_Arts閱讀 1,030評(píng)論 0 2