通過(guò)編寫一個(gè)簡(jiǎn)單的爬蟲程序募书,進(jìn)一步熟悉 lxml 解析庫(kù)的使用。使用 lxml 庫(kù)抓取貓眼電影 Top100 榜:
下面直接上代碼:
import requests
from lxml import etree
import random
class MaoyanSpider(object):
def __init__(self):
self.url='https://maoyan.com/board/4?offset=50'
self.headers={'User-Agent': 'Mozilla/4.0'}
def save_html(self):
html=requests.get(url=self.url,headers=self.headers).text
#jiexi
parse_html=etree.HTML(html)
# 基準(zhǔn) xpath 表達(dá)式另假,匹配10個(gè)<dd>節(jié)點(diǎn)對(duì)象
dd_list=parse_html.xpath('//dl[@class="board-wrapper"]/dd') #列表放10個(gè)dd
print(dd_list)
# .// 表示dd節(jié)點(diǎn)的所有子節(jié)點(diǎn)后代節(jié)點(diǎn)
# 構(gòu)建item空字典將提取的數(shù)據(jù)放入其中
item={}
for dd in dd_list:
# 處理字典數(shù)據(jù),注意xpath表達(dá)式匹配結(jié)果是一個(gè)列表怕犁,因此需要索引[0]提取數(shù)據(jù)
item['name']=dd.xpath('.//p[@class="name"]/a/text()')[0].strip()
item['star']=dd.xpath('.//p[@class="star"]/text()')[0].strip()
item['time']=dd.xpath('.//p[@class="releasetime"]/text()')[0].strip()
#輸出數(shù)據(jù)
print(item)
def run(self):
self.save_html()
if __name__ == '__main__':
spider=MaoyanSpider()
spider.run()
執(zhí)行結(jié)果如下:
[<Element dd at 0x1fe94967980>, <Element dd at 0x1feffa14dc0>, <Element dd at 0x1feffb5e800>, <Element dd at 0x1fefffdc140>, <Element dd at 0x1fe94969a80>, <Element dd at 0x1fe949cec00>, <Element dd at 0x1fe949ceb40>, <Element dd at 0x1fe949cef40>, <Element dd at 0x1fe949cee40>, <Element dd at 0x1fe949cef80>]
{'name': '海邊的曼徹斯特', 'star': '主演:卡西·阿弗萊克,盧卡斯·赫奇斯,米歇爾·威廉姆斯', 'time': '上映時(shí)間:2017-08-25'}
{'name': '布達(dá)佩斯大飯店', 'star': '主演:拉爾夫·費(fèi)因斯,托尼·雷沃羅利,西爾莎·羅南', 'time': '上映時(shí)間:2014-02-06(德國(guó))'}
{'name': '阿凡達(dá)', 'star': '主演:薩姆·沃辛頓,佐伊·索爾達(dá)娜,米歇爾·羅德里格茲', 'time': '上映時(shí)間:2010-01-04'}
{'name': '美國(guó)往事', 'star': '主演:羅伯特·德尼羅,詹姆斯·伍茲,伊麗莎白·麥戈文', 'time': '上映時(shí)間:2015-04-23'}
{'name': '復(fù)仇者聯(lián)盟4:終局之戰(zhàn)', 'star': '主演:小羅伯特·唐尼,克里斯·埃文斯,馬克·魯法洛', 'time': '上映時(shí)間:2019-04-24'}
{'name': '搏擊俱樂(lè)部', 'star': '主演:愛(ài)德華·哈里森·諾頓,布拉德·皮特,海倫娜·伯翰·卡特', 'time': '上映時(shí)間:1999-09-10(意大利)'}
{'name': '美麗心靈', 'star': '主演:羅素·克勞,詹妮弗·康納利,艾德·哈里斯', 'time': '上映時(shí)間:2001-12-13(美國(guó))'}
{'name': '消失的愛(ài)人', 'star': '主演:本·阿弗萊克,裴淳華,尼爾·帕特里克·哈里斯', 'time': '上映時(shí)間:2014-09-26(美國(guó))'}
{'name': '亂世佳人', 'star': '主演:費(fèi)雯·麗,克拉克·蓋博,奧利維婭·德哈維蘭', 'time': '上映時(shí)間:1939-12-15(美國(guó))'}
{'name': '竊聽風(fēng)暴', 'star': '主演:烏爾里媳呃海·穆埃,塞巴斯蒂安·科赫,馬蒂娜·格德克', 'time': '上映時(shí)間:2006-03-23(德國(guó))'}
________________END______________