国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

『爬蟲(chóng)四步走』手把手教你使用Python抓取并存儲(chǔ)網(wǎng)頁(yè)數(shù)據(jù)!

這篇具有很好參考價(jià)值的文章主要介紹了『爬蟲(chóng)四步走』手把手教你使用Python抓取并存儲(chǔ)網(wǎng)頁(yè)數(shù)據(jù)!。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

爬蟲(chóng)是Python的一個(gè)重要的應(yīng)用,使用Python爬蟲(chóng)我們可以輕松的從互聯(lián)網(wǎng)中抓取我們想要的數(shù)據(jù),**本文將基于爬取B站視頻熱搜榜單數(shù)據(jù)并存儲(chǔ)為例,詳細(xì)介紹Python爬蟲(chóng)的基本流程。**如果你還在入門(mén)爬蟲(chóng)階段或者不清楚爬蟲(chóng)的具體工作流程,那么應(yīng)該仔細(xì)閱讀本文!

第一步:嘗試請(qǐng)求

首先進(jìn)入b站首頁(yè),點(diǎn)擊排行榜并復(fù)制鏈接

https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3  

現(xiàn)在啟動(dòng)Jupyter notebook,并運(yùn)行以下代碼

import requests  
  
url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3'  
res = requests.get('url')  
print(res.status_code)  
#200  

在上面的代碼中,我們完成了下面三件事

  • 導(dǎo)入requests

  • 使用get方法構(gòu)造請(qǐng)求

  • 使用status_code獲取網(wǎng)頁(yè)狀態(tài)碼

可以看到返回值是200,表示服務(wù)器正常響應(yīng),這意味著我們可以繼續(xù)進(jìn)行。

第二步:解析頁(yè)面

在上一步我們通過(guò)requests向網(wǎng)站請(qǐng)求數(shù)據(jù)后,成功得到一個(gè)包含服務(wù)器資源的Response對(duì)象,現(xiàn)在我們可以使用.text來(lái)查看其內(nèi)容

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

可以看到返回一個(gè)字符串,里面有我們需要的熱榜視頻數(shù)據(jù),但是直接從字符串中提取內(nèi)容是比較復(fù)雜且低效的,因此我們需要對(duì)其進(jìn)行解析,將字符串轉(zhuǎn)換為網(wǎng)頁(yè)結(jié)構(gòu)化數(shù)據(jù),這樣可以很方便地查找HTML標(biāo)簽以及其中的屬性和內(nèi)容。

在Python中解析網(wǎng)頁(yè)的方法有很多,可以使用正則表達(dá)式,也可以使用BeautifulSoup、pyquerylxml,本文將基于BeautifulSoup進(jìn)行講解.

Beautiful Soup是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的第三方庫(kù).安裝也很簡(jiǎn)單,使用pip install bs4安裝即可,下面讓我們用一個(gè)簡(jiǎn)單的例子說(shuō)明它是怎樣工作的

from bs4 import BeautifulSoup  
  
page = requests.get(url)  
soup = BeautifulSoup(page.content, 'html.parser')  
title = soup.title.text   
print(title)  
# 熱門(mén)視頻排行榜 - 嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili  

在上面的代碼中,我們通過(guò)bs4中的BeautifulSoup類(lèi)將上一步得到的html格式字符串轉(zhuǎn)換為一個(gè)BeautifulSoup對(duì)象,注意在使用時(shí)需要制定一個(gè)解析器,這里使用的是html.parser。

接著就可以獲取其中的某個(gè)結(jié)構(gòu)化元素及其屬性,比如使用soup.title.text獲取頁(yè)面標(biāo)題,同樣可以使用soup.body、soup.p等獲取任意需要的元素。

第三步:提取內(nèi)容

在上面兩步中,我們分別使用requests向網(wǎng)頁(yè)請(qǐng)求數(shù)據(jù)并使用bs4解析頁(yè)面,現(xiàn)在來(lái)到最關(guān)鍵的步驟:如何從解析完的頁(yè)面中提取需要的內(nèi)容。

Beautiful Soup中,我們可以使用find/find_all來(lái)定位元素,但我更習(xí)慣使用CSS選擇器.select,因?yàn)榭梢韵袷褂肅SS選擇元素一樣向下訪問(wèn)DOM樹(shù)。

現(xiàn)在我們用代碼講解如何從解析完的頁(yè)面中提取B站熱榜的數(shù)據(jù),首先我們需要找到存儲(chǔ)數(shù)據(jù)的標(biāo)簽,在榜單頁(yè)面按下F12并按照下圖指示找到

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

可以看到每一個(gè)視頻信息都被包在class="rank-item"li標(biāo)簽下,那么代碼就可以這樣寫(xiě)??

all_products = []  
  
products = soup.select('li.rank-item')  
for product in products:  
    rank = product.select('div.num')[0].text  
    name = product.select('div.info > a')[0].text.strip()  
    play = product.select('span.data-box')[0].text  
    comment = product.select('span.data-box')[1].text  
    up = product.select('span.data-box')[2].text  
    url = product.select('div.info > a')[0].attrs['href']  
  
    all_products.append({  
        "視頻排名":rank,  
        "視頻名": name,  
        "播放量": play,  
        "彈幕量": comment,  
        "up主": up,  
        "視頻鏈接": url  
    })  

在上面的代碼中,我們先使用soup.select('li.rank-item'),此時(shí)返回一個(gè)list包含每一個(gè)視頻信息,接著遍歷每一個(gè)視頻信息,依舊使用CSS選擇器來(lái)提取我們要的字段信息,并以字典的形式存儲(chǔ)在開(kāi)頭定義好的空列表中。

可以注意到我用了多種選擇方法提取去元素,這也是select方法的靈活之處,感興趣的讀者可以進(jìn)一步自行研究。

第四步:存儲(chǔ)數(shù)據(jù)

通過(guò)前面三步,我們成功的使用requests+bs4從網(wǎng)站中提取出需要的數(shù)據(jù),最后只需要將數(shù)據(jù)寫(xiě)入Excel中保存即可。

如果你對(duì)pandas不熟悉的話,可以使用csv模塊寫(xiě)入,需要注意的是設(shè)置好編碼encoding='utf-8-sig',否則會(huì)出現(xiàn)中文亂碼的問(wèn)題

import csv  
keys = all_products[0].keys()  
  
with open('B站視頻熱榜TOP100.csv', 'w', newline='', encoding='utf-8-sig') as output_file:  
    dict_writer = csv.DictWriter(output_file, keys)  
    dict_writer.writeheader()  
    dict_writer.writerows(all_products)  

如果你熟悉pandas的話,更是可以輕松將字典轉(zhuǎn)換為DataFrame,一行代碼即可完成

import pandas as pd  
keys = all_products[0].keys()  
  
pd.DataFrame(all_products,columns=keys).to_csv('B站視頻熱榜TOP100.csv', encoding='utf-8-sig')

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

小結(jié)

至此我們就成功使用Python將b站熱門(mén)視頻榜單數(shù)據(jù)存儲(chǔ)至本地,大多數(shù)基于requests的爬蟲(chóng)基本都按照上面四步進(jìn)行。

不過(guò)雖然看上去簡(jiǎn)單,但是在真實(shí)場(chǎng)景中每一步都沒(méi)有那么輕松,從請(qǐng)求數(shù)據(jù)開(kāi)始目標(biāo)網(wǎng)站就有多種形式的反爬、加密,到后面解析、提取甚至存儲(chǔ)數(shù)據(jù)都有很多需要進(jìn)一步探索、學(xué)習(xí)。

本文選擇B站視頻熱榜也正是因?yàn)樗銐蚝?jiǎn)單,希望通過(guò)這個(gè)案例讓大家明白爬蟲(chóng)的基本流程,最后附上完整代碼

import requests  
from bs4 import BeautifulSoup  
import csv  
import pandas as pd  
  
url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3'  
page = requests.get(url)  
soup = BeautifulSoup(page.content, 'html.parser')  
  
all_products = []  
  
products = soup.select('li.rank-item')  
for product in products:  
    rank = product.select('div.num')[0].text  
    name = product.select('div.info > a')[0].text.strip()  
    play = product.select('span.data-box')[0].text  
    comment = product.select('span.data-box')[1].text  
    up = product.select('span.data-box')[2].text  
    url = product.select('div.info > a')[0].attrs['href']  
  
    all_products.append({  
        "視頻排名":rank,  
        "視頻名": name,  
        "播放量": play,  
        "彈幕量": comment,  
        "up主": up,  
        "視頻鏈接": url  
    })  
  
  
keys = all_products[0].keys()  
  
with open('B站視頻熱榜TOP100.csv', 'w', newline='', encoding='utf-8-sig') as output_file:  
    dict_writer = csv.DictWriter(output_file, keys)  
    dict_writer.writeheader()  
    dict_writer.writerows(all_products)  
  
### 使用pandas寫(xiě)入數(shù)據(jù)  
pd.DataFrame(all_products,columns=keys).to_csv('B站視頻熱榜TOP100.csv', encoding='utf-8-sig')  

end

目前在編程語(yǔ)言兵器排行榜上,最火的兩門(mén)語(yǔ)言就是Python和Java。二者各有千秋Java比較好找工作,Python使用面非常廣,而且簡(jiǎn)單易學(xué)可以干很多事情,很多同學(xué)兩門(mén)都在學(xué)。于是小編整理了資料送給大家,幫你加油打call。

準(zhǔn)備了一門(mén)非常系統(tǒng)的Python課程,除了為你提供一條清晰、無(wú)痛的學(xué)習(xí)路徑,我們甄選了最實(shí)用的學(xué)習(xí)資源以及龐大的主流爬蟲(chóng)案例庫(kù)。短時(shí)間的學(xué)習(xí),你就能夠很好地掌握爬蟲(chóng)這個(gè)技能,獲取你想得到的數(shù)據(jù),需要的朋友可以掃描文末二維碼即可獲取。

01 專(zhuān)為0基礎(chǔ)設(shè)置,小白也能輕松學(xué)會(huì)

我們把Python的所有知識(shí)點(diǎn),都穿插在了漫畫(huà)里面。

在Python小課中,你可以通過(guò)漫畫(huà)的方式學(xué)到知識(shí)點(diǎn),難懂的專(zhuān)業(yè)知識(shí)瞬間變得有趣易懂。
如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

你就像漫畫(huà)的主人公一樣,穿越在劇情中,通關(guān)過(guò)坎,不知不覺(jué)完成知識(shí)的學(xué)習(xí)。

02 無(wú)需自己下載安裝包,提供詳細(xì)安裝教程

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

03 規(guī)劃詳細(xì)學(xué)習(xí)路線,提供學(xué)習(xí)視頻

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

04 提供實(shí)戰(zhàn)資料,更好鞏固知識(shí)

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

05 提供面試資料以及副業(yè)資料,便于更好就業(yè)

如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析
如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析

這份完整版的Python全套學(xué)習(xí)資料已經(jīng)上傳CSDN,朋友們?nèi)绻枰部梢話呙柘路絚sdn官方二維碼或者點(diǎn)擊主頁(yè)和文章下方的微信卡片獲取領(lǐng)取方式,【保證100%免費(fèi)】
如何將網(wǎng)頁(yè)上爬取的內(nèi)容保存,爬蟲(chóng),python,開(kāi)發(fā)語(yǔ)言,職場(chǎng)和發(fā)展,學(xué)習(xí),大數(shù)據(jù),數(shù)據(jù)分析文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-766938.html

到了這里,關(guān)于『爬蟲(chóng)四步走』手把手教你使用Python抓取并存儲(chǔ)網(wǎng)頁(yè)數(shù)據(jù)!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 用Python手把手教你實(shí)現(xiàn)一個(gè)爬蟲(chóng)(含前端界面)

    用Python手把手教你實(shí)現(xiàn)一個(gè)爬蟲(chóng)(含前端界面)

    前言 爬蟲(chóng)基本原理 使用Python的requests庫(kù)發(fā)送HTTP請(qǐng)求 使用BeautifulSoup庫(kù)解析HTML頁(yè)面 使用PyQt5構(gòu)建前端界面 實(shí)現(xiàn)一個(gè)完整的爬蟲(chóng)程序 結(jié)語(yǔ) 隨著互聯(lián)網(wǎng)的飛速發(fā)展,再加上科技圈的技術(shù)翻天覆地的革新,互聯(lián)網(wǎng)上每天都會(huì)產(chǎn)生海量的數(shù)據(jù),這些數(shù)據(jù)對(duì)于企業(yè)和個(gè)人都具有重要的

    2024年04月28日
    瀏覽(28)
  • 小白必看、手把手教你利用爬蟲(chóng)爬網(wǎng)頁(yè)

    接下來(lái)從網(wǎng)絡(luò)爬蟲(chóng)的概念、用處與價(jià)值和結(jié)構(gòu)等三個(gè)方面,讓大家對(duì)網(wǎng)絡(luò)爬蟲(chóng)有一個(gè)基本的了解。 網(wǎng)絡(luò)爬蟲(chóng)及其應(yīng)用 隨著網(wǎng)絡(luò)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn),網(wǎng)絡(luò)爬蟲(chóng)應(yīng)運(yùn)而生。網(wǎng)絡(luò)爬蟲(chóng)(又被稱為網(wǎng)頁(yè)蜘蛛

    2024年02月07日
    瀏覽(29)
  • 手把手教你使用Python調(diào)用 ChatGPT!支持http代理

    手把手教你使用Python調(diào)用 ChatGPT!支持http代理

    作者:虛壞叔叔 博客:https://xuhss.com 早餐店不會(huì)開(kāi)到晚上,想吃的人早就來(lái)了!?? 前段時(shí)間OpenAI 開(kāi)放了兩個(gè)新模型的api接口,專(zhuān)門(mén)為聊天而生的 gpt-3.5-turbo 和 gpt-3.5-turbo-0301。 ChatGPT is powered by gpt-3.5-turbo, OpenAI’s most advanced language model. 從上面這句話,我們可以知道現(xiàn)在 ch

    2024年02月08日
    瀏覽(31)
  • 爬蟲(chóng)實(shí)戰(zhàn)-手把手教你爬豆瓣電影 | 附詳細(xì)源碼和講解

    爬蟲(chóng)實(shí)戰(zhàn)-手把手教你爬豆瓣電影 | 附詳細(xì)源碼和講解

    寫(xiě)在前面的話 目前為止,你應(yīng)該已經(jīng)了解爬蟲(chóng)的三個(gè)基本小節(jié): 來(lái)源:xiaqo.com ? 正文 明確需求 我們今天要爬的數(shù)據(jù)是 豆瓣電影Top250 ,是的,只有250條數(shù)據(jù),你沒(méi)猜錯(cuò)。 輸入網(wǎng)址? https://movie.douban.com/top250 ?我們可以看到網(wǎng)頁(yè)長(zhǎng)這樣: ? ? 編輯 ? 編輯 `250條數(shù)據(jù)`清清楚楚

    2024年04月08日
    瀏覽(31)
  • 手把手教你使用Python寫(xiě)貪吃蛇游戲(pygame,附源碼)

    貪吃蛇游戲是有史以來(lái)最受歡迎的街機(jī)游戲之一。在這個(gè)游戲中,玩家的主要目標(biāo)是在不撞墻或不撞墻的情況下抓住最大數(shù)量的水果。在學(xué)習(xí) Python 或 Pygame 時(shí),可以將創(chuàng)建蛇游戲視為一項(xiàng)挑戰(zhàn)。這是每個(gè)新手程序員都應(yīng)該接受的最好的初學(xué)者友好項(xiàng)目之一。學(xué)習(xí)構(gòu)建視頻游戲

    2024年02月16日
    瀏覽(23)
  • 手把手教你使用Flask框架構(gòu)建Python接口以及如何請(qǐng)求該接口

    Flask是一個(gè)輕量級(jí)的Web應(yīng)用框架,基于Python編寫(xiě),其核心思想是保持簡(jiǎn)潔,靈活性和易于擴(kuò)展。 Flask是一個(gè)輕量級(jí)的Web應(yīng)用框架,基于Python編寫(xiě),其核心思想是保持簡(jiǎn)潔,靈活性和易于擴(kuò)展。Flask提供了基本的Web開(kāi)發(fā)工具和應(yīng)用程序的結(jié)構(gòu),但同時(shí)也允許開(kāi)發(fā)者自由選擇其他庫(kù)

    2024年02月06日
    瀏覽(26)
  • 手把手教你使用Python實(shí)現(xiàn)推箱子小游戲(附完整源碼)

    手把手教你使用Python實(shí)現(xiàn)推箱子小游戲(附完整源碼)

    我們這個(gè)項(xiàng)目是一個(gè)基于Python實(shí)現(xiàn)的推箱子小游戲,名叫Sokoban: 這個(gè)游戲的目的是讓玩家,也就是大寫(xiě)的 P ,推著箱子 # ,填充用小寫(xiě)的 o 標(biāo)記的地面上的洞 該版本的Sokoban的規(guī)則如下: 游戲在矩形的二維網(wǎng)格上舉行,其 原點(diǎn)(0,0) 位于左上方 網(wǎng)格上的每個(gè)單元格可以隨時(shí)包

    2024年02月03日
    瀏覽(39)
  • 手把手教你用Python編寫(xiě)郵箱腳本引擎

    手把手教你用Python編寫(xiě)郵箱腳本引擎

    版權(quán)聲明:原創(chuàng)不易,本文禁止抄襲、轉(zhuǎn)載需附上鏈接,侵權(quán)必究! 郵箱是傳輸信息方式之一,個(gè)人,企業(yè)等都在使用,朋友之間發(fā)消息,注冊(cè)/登錄信息驗(yàn)證,訂閱郵箱,企業(yè)招聘,向客戶發(fā)送消息等都是郵箱的使用場(chǎng)景;郵箱有兩個(gè)較重要的協(xié)議:SMTP和POP3,均位于OSI7層

    2024年02月06日
    瀏覽(104)
  • 手把手教你用Python實(shí)現(xiàn)2048小游戲

    手把手教你用Python實(shí)現(xiàn)2048小游戲

    感覺(jué)好久沒(méi)有寫(xiě)小游戲玩了,今天恰巧有空.這次我來(lái)用Python做個(gè)2048小游戲吧.廢話不多說(shuō),文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下 目錄 一、開(kāi)發(fā)環(huán)境 二、環(huán)境搭建 三、原理介紹 四、效果圖 Python版本:3.6.4 相關(guān)模塊: pygame模塊; 以及一些Python自帶的模塊。 安裝

    2024年04月28日
    瀏覽(94)
  • 手把手教你如何使用SimiliarWeb

    手把手教你如何使用SimiliarWeb

    在之前的“手把手教你如何使用Google Trends”文章中我們講到從事跨境電商的賣(mài)家第一步遇到的問(wèn)題是“客戶在哪里?”該如何推廣我的產(chǎn)品?因此若想自己的店鋪?zhàn)龃笞龊?,則需要工具來(lái)幫助分析市場(chǎng)行情,根據(jù)市場(chǎng)行情調(diào)整自己的業(yè)務(wù)狀況。小編在上篇中已經(jīng)講解了三個(gè)特

    2024年02月09日
    瀏覽(103)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包