Python用lxml庫解析html并將爬取的數(shù)據(jù)存儲到MySQL數(shù)據(jù)庫

總的:

1.from lxml import etree
2.對html文本使用 etree.HTML(html)解析,得到Element對象
3.對Element對象使用xpath篩選(中間會穿插使用正則表達式)疚颊,返回一個列表
4.本文為實戰(zhàn)爬取豆瓣電影top250的信息,并將數(shù)據(jù)存入mysql中
5.用Navicat進行數(shù)據(jù)的可視化

實戰(zhàn):

  1. 導入要用到的庫
    import requests
    from lxml import etree
    import re
    import pymysql
    import time

  2. 定義函數(shù)用來解析html

#建立數(shù)據(jù)庫連接,(數(shù)據(jù)庫中原先就應該有一個database,如果沒有要先創(chuàng)建一個database,我這里創(chuàng)建的叫scraping)
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='yourpasswd', db='scraping', port=3306, charset='utf8')
cursor = conn.cursor()

#頭文件
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}

#定義的獲取電影url的函數(shù)
def get_movie_url(url):
    html = requests.get(url,headers=headers)
    #解析html
    selector = etree.HTML(html.text)
    #利用xpath獲取電影url
    movie_hrefs = selector.xpath('//div[@class="hd"]/a/@href')
    for movie_href in movie_hrefs:
        get_movie_info(movie_href)
獲取的url
  1. 定義子函數(shù)用來解析每一部電影(每個url)的元素屬性
def get_movie_info(url):
    html = requests.get(url,headers=headers)
    selector = etree.HTML(html.text)
    try:
        name = selector.xpath('//*[@id="content"]/h1/span[1]/text()')[0].strip()
        director = selector.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')[0].strip()
        actors = selector.xpath('//*[@id="info"]/span[3]/span[2]')[0]
        actor = actors.xpath('string(.)')
        style = re.findall('<span property="v:genre">(.*?)</span>',html.text,re.S)[0].strip()
        country = re.findall('<span class="pl">制片國家/地區(qū):</span> (.*?)<br/>',html.text,re.S)[0].strip()
        release_time = re.findall('上映日期:</span>.*?>(.*?)</span>',html.text,re.S)[0].strip()
        time = re.findall('片長:</span>.*?>(.*?)</span>',html.text,re.S)[0].strip()
        score = selector.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong/text()')[0].strip()
        #在數(shù)據(jù)庫中建立表格叫doubanmovie趁耗,表中包括以上屬性
        cursor.execute(
            "insert into doubanmovie (name,director,actor,style,country,release_time,time,score) values(%s,%s,%s,%s,%s,%s,%s,%s)",
            (str(name), str(director), str(actor), str(style), str(country), str(release_time), str(time), str(score)))
    except IndexError:
        pass
  1. 實現(xiàn)
if __name__ == '__main__':
    #獲取電影榜top250,網(wǎng)站把排名分為10頁,每頁25部電影,所以用以下形式構(gòu)造url
    urls = ['https://movie.douban.com/top250?start={}'.format(str(i)) for i in range(0, 250, 25)]
    for url in urls:
        get_movie_url(url)
        time.sleep(2)
    #把數(shù)據(jù)寫入數(shù)據(jù)庫的表中
    conn.commit()
  1. 效果
    數(shù)據(jù)列表

Navicat 是一套快速稿静、可靠并價格相宜的數(shù)據(jù)庫管理工具娇掏,

專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設(shè)州刽。它的設(shè)計符合數(shù)據(jù)庫管理員空执、開發(fā)人員及中小企業(yè)的需要。Navicat 是以直覺化的圖形用戶界面而建的穗椅,讓你可以以安全并且簡單的方式創(chuàng)建辨绊、組織、訪問并共用信息匹表。

Navicat目前還是一款收費軟件门坷,但是可以在網(wǎng)絡(luò)上尋找一些破解版本,也可以找筆者要袍镀,筆者很樂意和大家分享學習經(jīng)驗默蚌,也希望大家多多指導筆者,共同進步苇羡!筆者微信wuzhenpingcc绸吸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市设江,隨后出現(xiàn)的幾起案子锦茁,更是在濱河造成了極大的恐慌,老刑警劉巖叉存,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件码俩,死亡現(xiàn)場離奇詭異,居然都是意外死亡歼捏,警方通過查閱死者的電腦和手機稿存,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞳秽,“玉大人挠铲,你說我怎么就攤上這事〖庞眨” “怎么了拂苹?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長痰洒。 經(jīng)常有香客問我瓢棒,道長,這世上最難降的妖魔是什么丘喻? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任脯宿,我火速辦了婚禮,結(jié)果婚禮上泉粉,老公的妹妹穿的比我還像新娘连霉。我一直安慰自己榴芳,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布跺撼。 她就那樣靜靜地躺著窟感,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歉井。 梳的紋絲不亂的頭發(fā)上柿祈,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音哩至,去河邊找鬼躏嚎。 笑死,一個胖子當著我的面吹牛菩貌,可吹牛的內(nèi)容都是我干的卢佣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼箭阶,長吁一口氣:“原來是場噩夢啊……” “哼虚茶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尾膊,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤媳危,失蹤者是張志新(化名)和其女友劉穎荞彼,沒想到半個月后冈敛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡鸣皂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年抓谴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寞缝。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡癌压,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荆陆,到底是詐尸還是另有隱情滩届,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布被啼,位于F島的核電站帜消,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浓体。R本人自食惡果不足惜泡挺,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望命浴。 院中可真熱鬧娄猫,春花似錦贱除、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褂删,卻和暖如春飞醉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屯阀。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工缅帘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人难衰。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓钦无,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盖袭。 傳聞我的和親對象是個殘疾皇子失暂,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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

  • 人生苦短,我用Python鳄虱。 起初弟塞,這篇文章是打算來寫 XPath 的,可是后來一想拙已,我需要的僅是 XPath 的...
    Moscow1147閱讀 20,783評論 1 14
  • 深情呼喚决记,你不來 卻成為別人的,如花美眷 鋪天蓋地的倍踪,你活在他人的視野 嘴角邊系宫,眼眉上,心坎兒里 我只能悄悄建车、艷羨...
    m末子m閱讀 186評論 0 0
  • 如花的年華缤至,似水的流年潮罪,有多少人走了又回來,如馬路上噠噠的汽笛聲來來回回领斥,不休不止嫉到,躲不開的是命運的糾纏,分開了又...
    三王先生閱讀 301評論 0 0
  • 人生豈能漫無目的戒突, 平平凡凡更要爭氣屯碴。 碌碌無為可悲可泣, 生活哪能盡如人意膊存。 生而為人最是幸運导而, 所以我們一定珍...
    郝逗閱讀 617評論 0 0