0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

豆瓣電影Top250信息爬取

python爬蟲(chóng)知識(shí)分享 ? 來(lái)源:python爬蟲(chóng)知識(shí)分享 ? 作者:python爬蟲(chóng)知識(shí)分享 ? 2022-03-23 15:50 ? 次閱讀

通過(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
收藏 人收藏

    評(pí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)系到電路板
    的頭像 發(fā)表于 09-26 09:39 ?91次閱讀

    索尼電影攝影機(jī)在未來(lái)電影制作教育中的作用

    日本大學(xué)藝術(shù)學(xué)院自成立以來(lái),作為日本第一所藝術(shù)學(xué)院,100多年來(lái)培養(yǎng)了許多從事專業(yè)電影制作人才。在電影研究系,引入了索尼電影攝影機(jī)“FX9”、“FX6” 和 “FX30” 進(jìn)行實(shí)踐教學(xué)。我們采訪了
    的頭像 發(fā)表于 08-16 11:06 ?495次閱讀

    如何理解PCB設(shè)計(jì)的電距離?

    一站式PCBA智造廠家今天為大家講講PCB設(shè)計(jì)電距離要求與走線規(guī)則有哪些?PCB設(shè)計(jì)電距離要求與走線規(guī)則。在PCB設(shè)計(jì)中,電距離和走線規(guī)則是關(guān)鍵的考慮因素,尤其是在高壓電路和高頻電路的設(shè)計(jì)中
    的頭像 發(fā)表于 08-15 09:23 ?476次閱讀

    QFN錫不好如何解決?—SMT錫膏

    QFN封裝的芯片IC,側(cè)面引腳錫是個(gè)大難題,經(jīng)常會(huì)遇到一些客戶反饋:qfn錫不好怎么解決?qfn芯片引腳標(biāo)準(zhǔn)上錫高度如何確定?qfn側(cè)面不錫?下面由深圳佳金源錫膏廠家來(lái)講解一下:一、QFN錫膏
    的頭像 發(fā)表于 07-17 16:07 ?461次閱讀
    QFN<b class='flag-5'>爬</b>錫不好如何解決?—SMT錫膏

    電距離是根據(jù)什么確定的

    電距離(Creepage Distance)是指在電氣設(shè)備中,兩個(gè)導(dǎo)體之間沿絕緣材料表面的距離。它是一個(gè)重要的電氣參數(shù),用于評(píng)估電氣設(shè)備在正常工作和故障條件下的絕緣性能。電距離的確定涉及到多個(gè)
    的頭像 發(fā)表于 07-12 15:39 ?447次閱讀

    電距離用什么檢測(cè)設(shè)備

    電距離是指在電氣設(shè)備中,不同電位的導(dǎo)體之間,通過(guò)絕緣材料隔離的最短距離。電距離的檢測(cè)對(duì)于確保電氣設(shè)備的安全運(yùn)行至關(guān)重要。本文將介紹電距離的檢測(cè)設(shè)備及其使用方法。 一、電距離檢測(cè)
    的頭像 發(fā)表于 07-12 15:37 ?346次閱讀

    電距離與電壓的對(duì)應(yīng)關(guān)系

    電距離(Creepage Distance)是電氣設(shè)備中的一個(gè)重要概念,它指的是在絕緣材料表面,沿著絕緣體表面或邊緣,從帶電部分到接地部分或不同電位部分之間的最短距離。電距離的大小直接影響
    的頭像 發(fā)表于 07-12 15:35 ?1565次閱讀

    帶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次下載

    pcb的電距離之解決方案大全

    pcb的電距離之解決方案大全
    的頭像 發(fā)表于 03-14 15:26 ?1289次閱讀

    電距離和電氣間隙的區(qū)別

    電距離和電氣間隙的區(qū)別? 電距離和電氣間隙是電力系統(tǒng)中兩個(gè)重要的概念,它們?cè)陔娏υO(shè)備的設(shè)計(jì)、運(yùn)行和維護(hù)中起著關(guān)鍵的作用。本文將詳細(xì)解釋這兩個(gè)概念的含義、區(qū)別以及它們?cè)陔娏ο到y(tǒng)中的應(yīng)用。 首先
    的頭像 發(fā)表于 12-08 10:26 ?2076次閱讀

    什么是電氣間隙,什么是電距離,PCB為什么要開(kāi)槽?

    什么是電氣間隙,什么是電距離,PCB為什么要開(kāi)槽? 電氣間隙是指在電氣設(shè)備或電路中,兩個(gè)相鄰的電極之間的最短距離。它主要用于防止因電氣設(shè)備或電路元件之間的電荷遷移而引起的電氣擊穿。電氣間隙的大小
    的頭像 發(fā)表于 12-07 13:53 ?3576次閱讀

    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),需要在終端
    的頭像 發(fā)表于 11-17 10:27 ?1126次閱讀

    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)
    的頭像 發(fā)表于 11-07 10:35 ?489次閱讀

    Python 如何獲取旅游景點(diǎn)信息

    今天將手把手教你使用線程池同程旅行的景點(diǎn)信息及評(píng)論數(shù)據(jù)并做詞云、數(shù)據(jù)可視化?。?!帶你了解各個(gè)城市的游玩景點(diǎn)信息。 在開(kāi)始
    的頭像 發(fā)表于 10-21 11:10 ?513次閱讀
    Python 如何獲取旅游景點(diǎn)<b class='flag-5'>信息</b>