通過(guò)本案例[豆瓣電影Top250信息爬取]鍛煉除正則表達(dá)式之外兩種信息解析方式:Xpath和PyQuery。
爬取url地址:https://movie.douban.com/top250
分析:
分析url地址:每頁(yè)25條數(shù)據(jù),共計(jì)10頁(yè)
第1頁(yè):https://movie.douban.com/top250?start=0
第2頁(yè):https://movie.douban.com/top250?start=25
第3頁(yè):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)頁(yè)源代碼內(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頁(yè)面信息'''
try:
#定義請(qǐng)求頭信息
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)頁(yè)中的內(nèi)容,并返回字段結(jié)果'''
print(content)
# =========使用pyquery解析==================
# 解析HTML文檔
doc = pq(content)
#獲取網(wǎng)頁(yè)中所有標(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)對(duì)象
html = etree.HTML(content)
#獲取網(wǎng)頁(yè)中所有標(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í)行文件追加寫(xiě)操作'''
with open("./result.txt",'a',encoding='utf-8') as f:
f.write(json.dumps(content,ensure_ascii=False) + "\n")
#json.dumps 序列化時(shí)對(duì)中文默認(rèn)使用的ascii編碼.想輸出真正的中文需要指定ensure_ascii=False
def main(offset):
''' 主程序函數(shù),負(fù)責(zé)調(diào)度執(zhí)行爬蟲(chóng)處理 '''
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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
python
+關(guān)注
關(guān)注
53文章
4753瀏覽量
84107 -
爬蟲(chóng)
+關(guān)注
關(guān)注
0文章
80瀏覽量
6771
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
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ī)在未來(lái)電影制作教育中的作用
日本大學(xué)藝術(shù)學(xué)院自成立以來(lái),作為日本第一所藝術(shù)學(xué)院,100多年來(lái)培養(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ì)中
QFN爬錫不好如何解決?—SMT錫膏
QFN封裝的芯片IC,側(cè)面引腳爬錫是個(gè)大難題,經(jīng)常會(huì)遇到一些客戶反饋:qfn爬錫不好怎么解決?qfn芯片引腳標(biāo)準(zhǔn)上錫高度如何確定?qfn側(cè)面不爬錫?下面由深圳佳金源錫膏廠家來(lái)講解一下:一、QFN錫膏
爬電距離是根據(jù)什么確定的
爬電距離(Creepage Distance)是指在電氣設(shè)備中,兩個(gè)導(dǎo)體之間沿絕緣材料表面的距離。它是一個(gè)重要的電氣參數(shù),用于評(píng)估電氣設(shè)備在正常工作和故障條件下的絕緣性能。爬電距離的確定涉及到多個(gè)
爬電距離用什么檢測(cè)設(shè)備
爬電距離是指在電氣設(shè)備中,不同電位的導(dǎo)體之間,通過(guò)絕緣材料隔離的最短距離。爬電距離的檢測(cè)對(duì)于確保電氣設(shè)備的安全運(yùn)行至關(guān)重要。本文將介紹爬電距離的檢測(cè)設(shè)備及其使用方法。 一、爬電距離檢測(cè)
爬電距離與電壓的對(duì)應(yīng)關(guān)系
爬電距離(Creepage Distance)是電氣設(shè)備中的一個(gè)重要概念,它指的是在絕緣材料表面,沿著絕緣體表面或邊緣,從帶電部分到接地部分或不同電位部分之間的最短距離。爬電距離的大小直接影響
帶PFC電路的75W輸出功率、高效率的單級(jí)反激式電源TOP250YN中文資料
電子發(fā)燒友網(wǎng)站提供《帶PFC電路的75W輸出功率、高效率的單級(jí)反激式電源TOP250YN中文資料.pdf》資料免費(fèi)下載
發(fā)表于 03-22 09:37
?2次下載
帶PFC電路的75W輸出功率、高效率的單級(jí)反激式電源TOP250YN75W數(shù)據(jù)手冊(cè)
電子發(fā)燒友網(wǎng)站提供《帶PFC電路的75W輸出功率、高效率的單級(jí)反激式電源TOP250YN75W數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
發(fā)表于 03-22 09:28
?1次下載
爬電距離和電氣間隙的區(qū)別
爬電距離和電氣間隙的區(qū)別? 爬電距離和電氣間隙是電力系統(tǒng)中兩個(gè)重要的概念,它們?cè)陔娏υO(shè)備的設(shè)計(jì)、運(yùn)行和維護(hù)中起著關(guān)鍵的作用。本文將詳細(xì)解釋這兩個(gè)概念的含義、區(qū)別以及它們?cè)陔娏ο到y(tǒng)中的應(yīng)用。 首先
什么是電氣間隙,什么是爬電距離,PCB為什么要開(kāi)槽?
什么是電氣間隙,什么是爬電距離,PCB為什么要開(kāi)槽? 電氣間隙是指在電氣設(shè)備或電路中,兩個(gè)相鄰的電極之間的最短距離。它主要用于防止因電氣設(shè)備或電路元件之間的電荷遷移而引起的電氣擊穿。電氣間隙的大小
top命令如何進(jìn)入選項(xiàng)
top命令是一個(gè)常用的Linux系統(tǒng)性能監(jiān)控工具,可以實(shí)時(shí)地監(jiān)視系統(tǒng)的整體運(yùn)行情況。通過(guò)使用top命令,我們可以查看系統(tǒng)的負(fù)載情況、進(jìn)程的CPU和內(nèi)存使用情況等。想要進(jìn)入top命令的選項(xiàng),需要在終端
Analog On Top的SOC如何做Top設(shè)計(jì)?
Analog On Top的SOC如何做Top設(shè)計(jì)? 簡(jiǎn)介: 在片上系統(tǒng)(SOC)的世界里,模擬運(yùn)算(AOT)方法為設(shè)計(jì)過(guò)程帶來(lái)了獨(dú)特的風(fēng)味。與數(shù)字邏輯處于頂端的傳統(tǒng)方法不同,AOT顛覆了層次結(jié)構(gòu)
Python 如何獲取旅游景點(diǎn)信息
今天將手把手教你使用線程池爬取同程旅行的景點(diǎn)信息及評(píng)論數(shù)據(jù)并做詞云、數(shù)據(jù)可視化?。?!帶你了解各個(gè)城市的游玩景點(diǎn)信息。 在開(kāi)始爬
評(píng)論