010 - 使用BeautifulSoup和XPath抓取結構化數(shù)據(jù)

仍然以糗事百科 http://www.qiushibaike.com/text/ 的段子數(shù)據(jù)抓取來說明祭往。

結構化數(shù)據(jù)挡爵,就是對應一個數(shù)據(jù)塊荡含,編程中的一個對象咒唆,數(shù)據(jù)庫中的一條記錄。

結構化數(shù)據(jù)抓取的原則内颗,循環(huán)點要放在包含整塊數(shù)據(jù)標簽處。即『先取大再取小』敦腔。

抓取數(shù)據(jù)字段:

  • 段子作者
  • 段子內容
  • 好笑數(shù)
  • 評論數(shù)

選取的循環(huán)點放在這個div上均澳,使用class屬性,不要使用id

<div class="article block untagged mb15" id='qiushi_tag_118966710'>

直接上代碼。大家重點掌握 XPath?的方法找前。bs4的selector糟袁,還是 XPath,都是用Chrome工具來 copy 躺盛,再根據(jù)網(wǎng)頁結構作一些調整项戴。

一、使用BeautifulSoup

# coding=utf-8

import requests
from bs4 import BeautifulSoup

user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
headers={"User-Agent":user_agent}  #請求頭,headers是一個字典類型

html = requests.get('http://www.qiushibaike.com/text/',headers=headers).content
soup = BeautifulSoup(html,'lxml')

#注意以下注釋的是不同的方法或定位槽惫,都可以

#divs = soup.find_all('div',class_="article block untagged mb15")

#divs = soup.select('div .article.block.untagged.mb15') # 注意這里 class屬性中有空格周叮,都轉為.

divs = soup.select('div.col1 > div')  # 這里是用從一層標簽開始定位的。

for div in divs:

    author =  div.select('div > a > img')
    if author :
        print author[0]['alt']


    content =  div.select('a > div > span')[0].text
    print content

    funny =  div.select('div.stats > span.stats-vote > i')[0].text
    print funny

    comment =  div.select('div.stats > span.stats-comments > a > i')[0].text
    print comment

二界斜、使用XPath

# coding=utf-8
import requests
from lxml import etree

user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
headers={"User-Agent":user_agent}  #請求頭,headers是一個字典類型

html = requests.get('http://www.qiushibaike.com/text/',headers=headers).content

selector = etree.HTML(html)

divs = selector.xpath('//div[@class="article block untagged mb15"]')

for div in divs:
    author = div.xpath('div[1]/a[2]/@title')
    print author[0]

    content = div.xpath('a[1]/div/span/text()[1]')

    print content[0]

    funny = div.xpath('div[2]/span[1]/i/text()')

    print funny[0]

    comment = div.xpath('div[2]/span[2]/a/i/text()')

    print comment[0]

以上數(shù)據(jù)只作了打印顯示仿耽。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市各薇,隨后出現(xiàn)的幾起案子项贺,更是在濱河造成了極大的恐慌,老刑警劉巖峭判,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件开缎,死亡現(xiàn)場離奇詭異,居然都是意外死亡林螃,警方通過查閱死者的電腦和手機奕删,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來治宣,“玉大人急侥,你說我怎么就攤上這事∥暄” “怎么了坏怪?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绊茧。 經(jīng)常有香客問我铝宵,道長,這世上最難降的妖魔是什么华畏? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任鹏秋,我火速辦了婚禮,結果婚禮上亡笑,老公的妹妹穿的比我還像新娘侣夷。我一直安慰自己,他們只是感情好仑乌,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布百拓。 她就那樣靜靜地躺著琴锭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衙传。 梳的紋絲不亂的頭發(fā)上决帖,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音蓖捶,去河邊找鬼地回。 笑死,一個胖子當著我的面吹牛俊鱼,可吹牛的內容都是我干的刻像。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼亭引,長吁一口氣:“原來是場噩夢啊……” “哼绎速!你這毒婦竟也來了?” 一聲冷哼從身側響起焙蚓,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤纹冤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后购公,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萌京,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年宏浩,在試婚紗的時候發(fā)現(xiàn)自己被綠了知残。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡比庄,死狀恐怖求妹,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情佳窑,我是刑警寧澤制恍,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站神凑,受9級特大地震影響净神,放射性物質發(fā)生泄漏。R本人自食惡果不足惜溉委,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一鹃唯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓣喊,春花似錦坡慌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽絮爷。三九已至,卻和暖如春梨树,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岖寞。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工抡四, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仗谆。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓指巡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隶垮。 傳聞我的和親對象是個殘疾皇子藻雪,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容