通過本案例[豆瓣電影Top250信息爬取]鍛煉除正則表達(dá)式之外兩種信息解析方式:Xpath和PyQuery。
爬取url地址:https://movie.douban.com/top250
分析:
分析url地址:每頁25條數(shù)據(jù),共計(jì)10頁
第1頁:https://movie.douban.com/top250?start=0
第2頁:https://movie.douban.com/top250?start=25
第3頁:https://movie.douban.com/top250?start=50
...
結(jié)果:
for i in range(10):
url = "https://movie.douban.com/top250?start="+str(i*25)
分析網(wǎng)頁源代碼內(nèi)容:每部電影信息都是放在
...
具體實(shí)現(xiàn)代碼如下:
from requests.exceptions import RequestException
from lxml import etree
from pyquery import PyQuery as pq
import requests
import re,time,json
def getPage(url):
'''爬取指定url頁面信息'''
try:
#定義請求頭信息
headers = {
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1'
}
# 執(zhí)行爬取
res = requests.get(url,headers=headers)
#判斷響應(yīng)狀態(tài),并響應(yīng)爬取內(nèi)容
if res.status_code == 200:
return res.text
else:
return None
except RequestException:
return None
def parsePage(content):
'''解析爬取網(wǎng)頁中的內(nèi)容,并返回字段結(jié)果'''
print(content)
# =========使用pyquery解析==================
# 解析HTML文檔
doc = pq(content)
#獲取網(wǎng)頁中所有標(biāo)簽并遍歷輸出標(biāo)簽名
items = doc("div.item")
#遍歷封裝數(shù)據(jù)并返回
for item in items.items():
yield {
'index':item.find("div.pic em").text(),
'image':item.find("div.pic img").attr('src'),
'title':item.find("div.hd span.title").text(),
'actor':item.find("div.bd p:eq(0)").text(),
'score':item.find("div.bd div.star span.rating_num").text(),
}
'''
# =======使用xpath解析====================
# 解析HTML文檔,返回根節(jié)點(diǎn)對象
html = etree.HTML(content)
#獲取網(wǎng)頁中所有標(biāo)簽并遍歷輸出標(biāo)簽名
items = html.xpath('//div[@class="item"]')
#遍歷封裝數(shù)據(jù)并返回
for item in items:
yield {
'index':item.xpath('.//div/em[@class=""]/text()')[0],
'image':item.xpath('.//img[@width="100"]/@src')[0],
'title':item.xpath('.//span[@class="title"]/text()')[0],
'actor':item.xpath('.//p[@class=""]/text()')[0],
'score':item.xpath('.//span[@class="rating_num"]/text()'),
#'time':item[4].strip()[5:],
}
'''
def writeFile(content):
'''執(zhí)行文件追加寫操作'''
with open("./result.txt",'a',encoding='utf-8') as f:
f.write(json.dumps(content,ensure_ascii=False) + "\n")
#json.dumps 序列化時(shí)對中文默認(rèn)使用的ascii編碼.想輸出真正的中文需要指定ensure_ascii=False
def main(offset):
''' 主程序函數(shù),負(fù)責(zé)調(diào)度執(zhí)行爬蟲處理 '''
url = 'https://movie.douban.com/top250?start=' + str(offset)
html = getPage(url)
# 判斷是否爬取到數(shù)據(jù),并調(diào)用解析函數(shù)
if html:
for item in parsePage(html):
writeFile(item)
# 判斷當(dāng)前執(zhí)行是否為主程序運(yùn)行,并遍歷調(diào)用主函數(shù)爬取數(shù)據(jù)
if __name__ == '__main__':
for i in range(10):
main(offset=i*25)
time.sleep(1)
審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86762 -
爬蟲
+關(guān)注
關(guān)注
0文章
83瀏覽量
7508
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
請問USB緩沖區(qū)取數(shù)據(jù)可以多次取嗎?
在使用USB軟件獲取數(shù)據(jù)是,下位機(jī)給我發(fā)送了13個(gè)32位數(shù)據(jù)到USB IN緩沖區(qū),為什么我調(diào)用API函數(shù)想要第一次取1個(gè)32位數(shù)據(jù),取完之后再取12位數(shù)據(jù),程序會(huì)卡死。
發(fā)表于 07-16 08:12
電氣間隙與爬電距離的相關(guān)設(shè)計(jì)
眾所周知,48V相較12V電壓上升,因此需要更大的爬電距離(安全絕緣路徑)和電氣間隙(安全絕緣間距)。這意味著部分連接器需要重新設(shè)計(jì)。
FLIR ONE Edge Pro紅外熱像儀在爬寵飼養(yǎng)中的應(yīng)用
在爬寵飼養(yǎng)中,溫度控制是決定寵物健康與幸福的關(guān)鍵因素。無論是巴西龜、蜥蜴還是蛇類,它們依賴外部熱源調(diào)節(jié)體溫,稍有不慎就可能導(dǎo)致健康問題。今天,我們就通過一位爬寵主人的真實(shí)案例,看看FLIR ONE Edge Pro智能紅外熱像儀如何幫助他精準(zhǔn)掌控飼養(yǎng)環(huán)境,讓愛寵舒適生活。
洲明科技亮相2025全國電影交易會(huì)
此前,5月20日至23日,2025年全國電影(廈門)交易會(huì)暨第27屆全國影片推介會(huì)在廈門舉行。作為全國電影標(biāo)準(zhǔn)化委員會(huì)LED顯示行業(yè)唯一委員企業(yè),洲明科技應(yīng)邀參會(huì),為大會(huì)主會(huì)場提供超高清LED顯示支持,并在核心展覽區(qū)“數(shù)影萬象·影視供應(yīng)鏈生態(tài)展”設(shè)立專題展位,系統(tǒng)展示LE
用于攝像頭模塊的 Open Top QFN 插槽Ironwood Electronics
、Open Top QFN插槽的核心特性O(shè)pen Top結(jié)構(gòu)頂部開口設(shè)計(jì)允許芯片直接放置或通過自動(dòng)化設(shè)備(如取放機(jī))快速裝載,無需額外操作空間,適配攝像頭模塊的小型化需求。便于視覺檢測或調(diào)試時(shí)直接觀察
發(fā)表于 05-09 09:11
什么是爬電距離與電氣間隙?
義爬電距離,可形象理解為一螞蟻沿絕緣材料表面從一導(dǎo)電部件爬至另一導(dǎo)電部件所經(jīng)最短路徑。它涉及兩個(gè)導(dǎo)電部件間沿絕緣材料表面測量的最短空間距離,這一距離的設(shè)定需綜合考量電氣設(shè)備的額定電壓、絕緣材料的耐泄

華夏電影與利亞德集團(tuán)合作新成果:全球首款Micro 4k LED電影屏落地
近期,華夏電影與利亞德集團(tuán)合作的又一重要成果——全球首款Micro 4k LED電影屏正式落地儀式在河北石家莊影城隆重舉行。這款電影屏是行業(yè)內(nèi)唯一一款通過DCI認(rèn)證的Micro LED電影
PI推出新型寬爬電距離開關(guān)IC
深耕于高壓集成電路高能效功率變換領(lǐng)域的知名公司Power Integrations(納斯達(dá)克股票代號:POWI)今天為其面向汽車應(yīng)用的InnoSwitch3-AQ反激式開關(guān)IC推出寬爬電封裝選項(xiàng)
PCB設(shè)計(jì)中的爬電距離:確保電路板安全可靠
一站式PCBA智造廠家今天為大家講講什么是PCB設(shè)計(jì)爬電距離?PCB設(shè)計(jì)爬電距離的重要性。在電子制造業(yè)中,PCB設(shè)計(jì)是至關(guān)重要的一環(huán)。而在PCB設(shè)計(jì)中,爬電距離是一個(gè)關(guān)鍵概念,直接關(guān)系到電路板
索尼電影攝影機(jī)在未來電影制作教育中的作用
日本大學(xué)藝術(shù)學(xué)院自成立以來,作為日本第一所藝術(shù)學(xué)院,100多年來培養(yǎng)了許多從事專業(yè)電影制作人才。在電影研究系,引入了索尼電影攝影機(jī)“FX9”、“FX6” 和 “FX30” 進(jìn)行實(shí)踐教學(xué)。我們采訪了
如何理解PCB設(shè)計(jì)的爬電距離?
一站式PCBA智造廠家今天為大家講講PCB設(shè)計(jì)爬電距離要求與走線規(guī)則有哪些?PCB設(shè)計(jì)爬電距離要求與走線規(guī)則。在PCB設(shè)計(jì)中,爬電距離和走線規(guī)則是關(guān)鍵的考慮因素,尤其是在高壓電路和高頻電路的設(shè)計(jì)中
評論