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

編程小白的自學筆記九(python爬蟲入門+代碼詳解)

這篇具有很好參考價值的文章主要介紹了編程小白的自學筆記九(python爬蟲入門+代碼詳解)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

系列文章目錄

編程小白的自學筆記八(python中的多線程)

編程小白的自學筆記七(python中類的繼承)?

?編程小白的自學筆記六(python中類的靜態(tài)方法和動態(tài)方法)?

編程小白的自學筆記五(Python類的方法)?

編程小白的自學筆記四(正則表達式模塊search函數(shù))?


目錄

  • 系列文章目錄

    前言

    一、使用get方法請求數(shù)據(jù)

    二、爬取酷狗音樂排行榜

    總結(jié)


前言

很多小白都是聽說python可以很好的編寫爬蟲腳本慕名而來,我也是,終于學到爬蟲部分了,前面的html語言,客戶端和服務(wù)器的交互等基礎(chǔ)就不贅述了,直接進入主題。


一、使用get方法請求數(shù)據(jù)

開發(fā)網(wǎng)絡(luò)爬蟲需要第三方模塊requests,我們需要安裝,語法如下:

Pip install requests

安裝完成后,使用其中的get方法就可以返回結(jié)果,其功能等同于我們在瀏覽器輸入網(wǎng)址,然后服務(wù)器返回一個頁面給我們一樣?。

requests庫的get方法是用于向服務(wù)器發(fā)送GET請求的。它的完整參數(shù)如下:

  • url:請求的URL地址。
  • params:查詢字符串,用于傳遞參數(shù)。
  • headers:請求頭信息。
  • cookies:Cookie信息。
  • proxies:代理服務(wù)器地址。
  • timeout:超時時間。
  • verify:是否驗證SSL證書。

?下面我們看一個小例子:

import requests
url = 'http://www.baidu.com'
try:
    req = requests.get(url)
    print(req.text)
except:
print('查詢失敗')

代碼還是很簡單的,返回的結(jié)果是:

<!DOCTYPE html>

<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

返回的內(nèi)容比較多,我刪除了中間的一些代碼,這個就是網(wǎng)站的源碼。我可以看出,只要給get方法傳遞一個url地址就行。?

二、爬取酷狗音樂排行榜

下面就進入真正的實戰(zhàn)了,爬取酷狗音樂排行榜數(shù)據(jù),網(wǎng)址是酷狗TOP500_排行榜_樂庫頻道_酷狗網(wǎng),可以看到網(wǎng)頁上對歌曲進行了排名。

編程小白的自學筆記九(python爬蟲入門+代碼詳解),編程小白自學筆記,筆記,python,爬蟲,正則表達式,數(shù)據(jù)挖掘?

我們右擊鼠標打開檢查選項,可以找到歌曲信息在Html中的位置,可以看出歌曲名稱和演唱者都在<li>元素的title屬性中,如果我們通過get方法獲取了網(wǎng)頁的全部內(nèi)容,就可以使用正則表達式提取出我們需要的信息。

?編程小白的自學筆記九(python爬蟲入門+代碼詳解),編程小白自學筆記,筆記,python,爬蟲,正則表達式,數(shù)據(jù)挖掘

下面是實戰(zhàn)代碼

import requests
import re
url = 'https://www.kugou.com/yy/rank/home/1-8888.html'
try:
    req = requests.get(url)
    songs = re.findall(r'<li.*?title="(.*?)".*?>',req.text)
    for song in songs:
        print(song)
except:
    print('查詢失敗')

?程序運行成功,但不是我們想要的結(jié)果,返回的是空,也就是說沒有匹配到結(jié)果,為此,我增加了代碼print(req.text),看看我們獲取到的返回結(jié)果是什么。

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>403 Forbidden</title>

<style type="text/css">body{margin:5% auto 0 auto;padding:0 18px}.P{margin:0 22%}.O{margin-top:20px}.N{margin-top:10px}.M{margin:10px 0 30px 0}.L{margin-bottom:60px}.K{font-size:25px;color:#F90}.J{font-size:14px}.I{font-size:20px}.H{font-size:18px}.G{font-size:16px}.F{width:230px;float:left}.E{margin-top:5px}.D{margin:8px 0 0 -20px}.C{color:#3CF;cursor:pointer}.B{color:#909090;margin-top:15px}.A{line-height:30px}.hide_me{display:none}</style>

</head>

<body>

<div id="p" class="P">

<div class="K">403</div>

<div class="O I">Forbidden</div>

<p class="J A L">Error Times: Fri, 23 Jun 2023 06:40:43 GMT

<br>

<span class="F">IP: 60.174.21.124</span>Node information: CS-000-01uyG161

<br>URL: https://www.kugou.com/yy/rank/home/1-8888.html

<br>Request-Id: 64953e6b_CS-000-01uyG161_35678-151

<br>

<br>Check:

<span class="C G" onclick="s(0)">Details</span></p>

</div>

<div id="d" class="hide_me P H">

<div class="K">ERROR</div>

<p class="O I">The Requested URL could not be retrieved</p>

<div class="O">

<div>While trying to retrieve the URL:</div>

<pre class="B G">https://www.kugou.com/yy/rank/home/1-8888.html</pre></div>

<div class="M">

<span>The following error was encountered:</span>

<ul class="E">

<li class="D G">Invalid Request</li></ul>

</div>

<p class="M">The access control configuration prevents your request at this time.

<p></p>Please contact your service provider if you feel this is incorrect.</p>

<a class="N C" href="#" onclick="s(1)">return</a></div>

<script type="text/javascript">function e(i) {

return document.getElementById(i);

}

function d(i, t) {

e(i).style.display = (t ? 'block': 'none');

}

function s(e) {

d('p', e);

d('d', !e);

}</script>

</body>

</html>

可以看到,并沒有歌手和歌曲內(nèi)容,應(yīng)該是搜狗網(wǎng)站進行了一些反爬。于是我們在get里面加上headers={'user-agent':'chrome'},來模擬瀏覽器訪問,代碼如下:?

import re
url = 'https://www.kugou.com/yy/rank/home/1-8888.html'
try:
    req = requests.get(url,headers={'user-agent':'chrome'})
    # print(req.text)
    songs = re.findall(r'<li.*?title="(.*?)"',req.text)
    for song in songs:
        print(song)
except:
print('查詢失敗')

這次成功返回我們要的結(jié)果:

蘇星婕 - 聽悲傷的情歌

指尖笑 - 不問ciaga

郭頂 - 凄美地

一只白羊 - 等不到的你

任夏 - 悲傷的愛情

張靚穎、王赫野 - 是你 (Live)

Mae Stephens - If We Ever Broke Up (Explicit)

Kui Kui - 寶貝在干嘛

張紫豪 - 可不可以

周杰倫 - 說好的幸福呢

周杰倫 - 晴天

汪蘇瀧、吉克雋逸 - Letting Go (Live)

承桓 - 我會等

蔡健雅 - Letting Go

任夏 - 失眠情歌 (Live合唱版)

蘇星婕 - 吹著晚風想起你

周杰倫 - 我落淚情緒零碎

云狗蛋 - 天若有情

程響 - 可能

A-Lin - 天若有情

RE-D、是二哈ya、masta - 肯定

G.E.M. 鄧紫棋 - 喜歡你

我們來詳細分析下:

  1. 用get方法獲取網(wǎng)頁內(nèi)容。這個內(nèi)容和最開始介紹的內(nèi)容一樣,get方法向服務(wù)器發(fā)送請求,服務(wù)器返回數(shù)據(jù)。
  2. 增加headers參數(shù)。我們第一次沒有得到想要的結(jié)果,是網(wǎng)站增加了限制,目的就是用來驗證請求是不是正常瀏覽器發(fā)出的,第一次我們的請求明顯被服務(wù)器發(fā)現(xiàn)不正常了,于是我們增加了headers參數(shù),內(nèi)容為{'user-agent':'chrome'},意思就是瀏覽器類型為谷歌瀏覽器,這下騙過了服務(wù)器。
  3. 使用正則匹配我們想要的結(jié)果。使用正則我們需要先導入re模塊,原始網(wǎng)頁內(nèi)容為<li class=" " title="蘇星婕 - 聽悲傷的情歌" data-index="0" data-eid="8id4200b">,那么我們只需要匹配以<li開頭,內(nèi)含有title=""的語句就行,那就可以這樣寫正則表達式<li.*?title="(.*?)",.*?代表除換行以外的其他元素,表達式的返回結(jié)果是子表達式的內(nèi)容,正好是歌手加歌曲。

總結(jié)

requests庫是一個Python的第三方庫,用于發(fā)送HTTP請求。它提供了簡單易用的API,可以方便地實現(xiàn)各種HTTP請求操作,如GET、POST、PUT、DELETE等。

requests庫的主要特點如下:

1. 簡單易用:requests庫的API設(shè)計簡潔明了,易于上手使用。
2. 靈活性高:requests庫支持多種HTTP請求方法和參數(shù)設(shè)置,可以根據(jù)需要進行靈活配置。
3. 性能優(yōu)異:requests庫采用了高效的HTTP協(xié)議解析器和連接池技術(shù),可以提高請求的響應(yīng)速度和穩(wěn)定性。
4. 支持多種數(shù)據(jù)格式:requests庫可以處理JSON、XML、HTML等多種數(shù)據(jù)格式,并提供了豐富的解析器和轉(zhuǎn)換器。
5. 跨平臺兼容性好:requests庫可以在Windows、Linux、Mac OS等多個操作系統(tǒng)上運行,并且支持Python 2.x和Python 3.x版本。

總之,requests庫是一個非常實用的HTTP請求工具,可以幫助開發(fā)者快速實現(xiàn)各種網(wǎng)絡(luò)請求操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-595472.html

到了這里,關(guān)于編程小白的自學筆記九(python爬蟲入門+代碼詳解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 項目二:學會使用python爬蟲請求庫(小白入門級)

    項目二:學會使用python爬蟲請求庫(小白入門級)

    上一章已經(jīng)了解python爬蟲的基本知識,這一次讓我們一起來學會如何使用python請求庫爬取目標網(wǎng)站的信息。當然這次爬蟲之旅相信我能給你帶來不一樣的體驗。 目錄 一、安裝requests 庫 簡介 安裝 步驟 1.requests的基本使用3步驟 2.查看所使用編碼 3.設(shè)置編碼 二、認識requests請求

    2024年04月24日
    瀏覽(22)
  • python教程 入門學習筆記 第3天 編程基礎(chǔ)常識 代碼注釋 變量與常量

    編程基礎(chǔ)常識 一、注釋 1、對代碼的說明與解釋,它不會被編譯執(zhí)行,也不會顯示在編譯結(jié)果中 2、注釋分為:單行注釋和多行注釋 3、用#號開始,例如:#這是我的第一個python程序 4、注釋可以寫在單獨一行,也可以寫在一句代碼后面 5、不想執(zhí)行編譯,又不能刪除的代碼,可

    2024年02月14日
    瀏覽(94)
  • Python教程_編程入門自學教程_菜鳥教程-免費教程分享

    Python - 教程 Python - 概述 Python - 環(huán)境設(shè)置 Python - 基本語法 Python - 變量類型 Python - 基本運算符 Python - 決策 Python - 循環(huán) Python - 數(shù)字 Python - 字符串 Python - 列表 Python - 元組 Python - 字典 Python - 日期和時間 Python - 功能 Python - 模塊 Python - 文件I / O. Python - 異常處理 Python - 面向?qū)ο?/p>

    2024年02月02日
    瀏覽(27)
  • 小白用chatgpt編寫python 爬蟲程序代碼 抓取網(wǎng)頁數(shù)據(jù)(js動態(tài)生成網(wǎng)頁元素)

    小白用chatgpt編寫python 爬蟲程序代碼 抓取網(wǎng)頁數(shù)據(jù)(js動態(tài)生成網(wǎng)頁元素)

    jS動態(tài)生成,由于呈現(xiàn)在網(wǎng)頁上的內(nèi)容是由JS生成而來,我們能夠在瀏覽器上看得到,但是在HTML源碼中卻發(fā)現(xiàn)不了 ? ? ? ?如果不加,如果網(wǎng)站有防爬技術(shù),比如頻繁訪問,后面你會發(fā)現(xiàn)什么數(shù)據(jù)都取不到 User-Agent獲取地方: ?網(wǎng)頁獲取位置: 使用代理IP解決反爬。(免費代理

    2024年02月01日
    瀏覽(31)
  • 網(wǎng)絡(luò)安全(黑客)-小白自學筆記

    網(wǎng)絡(luò)安全(黑客)-小白自學筆記

    想自學網(wǎng)絡(luò)安全(黑客技術(shù))首先你得了解什么是網(wǎng)絡(luò)安全!什么是黑客! 網(wǎng)絡(luò)安全可以基于攻擊和防御視角來分類,我們經(jīng)常聽到的 “紅隊”、“滲透測試” 等就是研究攻擊技術(shù),而“藍隊”、“安全運營”、“安全運維”則研究防御技術(shù)。 無論網(wǎng)絡(luò)、Web、移動、桌面、

    2024年02月06日
    瀏覽(29)
  • 網(wǎng)絡(luò)安全(黑客技術(shù))—小白自學筆記

    網(wǎng)絡(luò)安全(黑客技術(shù))—小白自學筆記

    網(wǎng)絡(luò)安全可以基于攻擊和防御視角來分類,我們經(jīng)常聽到的 “紅隊”、“滲透測試” 等就是研究攻擊技術(shù),而“藍隊”、“安全運營”、“安全運維”則研究防御技術(shù)。 一、是市場需求量高; 二、則是發(fā)展相對成熟入門比較容易。 需要掌握的知識點偏多(舉例): 外圍打

    2024年02月08日
    瀏覽(24)
  • Python 網(wǎng)絡(luò)爬蟲入門詳解

    Python 網(wǎng)絡(luò)爬蟲入門詳解

    什么是網(wǎng)絡(luò)爬蟲 ? ? ? ? ?網(wǎng)絡(luò)爬蟲又稱網(wǎng)絡(luò)蜘蛛,是指按照某種規(guī)則在網(wǎng)絡(luò)上爬取所需內(nèi)容的腳本程序。眾所周知,每個網(wǎng)頁通常包含其他網(wǎng)頁的入口,網(wǎng)絡(luò)爬蟲則通過一個網(wǎng)址依次進入其他網(wǎng)址獲取所需內(nèi)容。 優(yōu)先申明:我們使用的python編譯環(huán)境為PyCharm 一、首先一個網(wǎng)

    2024年01月17日
    瀏覽(21)
  • Python爬蟲學習筆記(一)---Python入門

    Python爬蟲學習筆記(一)---Python入門

    pycharm的安裝可以自行去搜索教程。 pycharm的使用需要注意: 1、venv文件夾是這個項目的虛擬環(huán)境文件,應(yīng)與代碼文件分開。 2、如果運行沒有,最后一行是“進程已結(jié)束,退出代碼為0”,如果最后不是0,那么,就說明運行出錯。 print括號中使用單引號或者雙引號都是可以的。

    2024年01月17日
    瀏覽(22)
  • Python從入門到網(wǎng)絡(luò)爬蟲(控制語句詳解)

    Python從入門到網(wǎng)絡(luò)爬蟲(控制語句詳解)

    做任何事情都要遵循一定的原則。例如,到圖書館去借書,就需要有借書證,并且借書證不能過期,這兩個條件缺一不可。程序設(shè)計亦是如此,需要使用流程控制實現(xiàn)與用戶的交流,并根據(jù)用戶需求決定程序“做什么”“怎么做\\\"。 Python的流程控制語句主要可以分為以下幾類

    2024年02月02日
    瀏覽(46)
  • Python從入門到網(wǎng)絡(luò)爬蟲(正則表達詳解)

    正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。 Python 自1.5版本起增加了re 模塊,它提供 Perl 風格的正則表達式模式。 re 模塊使 Python 語言擁有全部的正則表達式功能。? compile 函數(shù)根據(jù)一個模式字符串和可選的標志參數(shù)生成一個正

    2024年01月18日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包