欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:爬蟲的第一個(gè)小程序

柚子快報(bào)邀請(qǐng)碼778899分享:爬蟲的第一個(gè)小程序

http://yzkb.51969.com/

1.爬蟲三大庫

?因?yàn)榕老x需要用到這三個(gè)Requests,BeautifulSoup和Lxml庫,所以先說一下我是如何安裝,和使用的。

1.1 Requests庫

1.1.1 requests庫的安裝

我是通過pycharm下載的第三方庫requests

打開pycharm后點(diǎn)擊File>>Settings>>Project>>Project>>Python Interpreter>>點(diǎn)擊右方“+”號(hào)>>在搜索欄中輸入requests>>下方的選項(xiàng)欄中出現(xiàn)requests后點(diǎn)擊requests>>點(diǎn)擊下方的Install Package

最后在這一欄中出現(xiàn)了requests就算安裝完成了

1.1.2 Requests庫的介紹和使用

1.Requests庫的作用就是請(qǐng)求網(wǎng)站獲取網(wǎng)頁數(shù)據(jù)的。

2.reqests是一個(gè)很強(qiáng)大的第三方庫,可以發(fā)送http請(qǐng)求和處理響應(yīng)。常用的有:

1).發(fā)送get請(qǐng)求requests.get()

2).發(fā)送post請(qǐng)求,requests.post()

3).設(shè)置請(qǐng)求頭,例如:User-Agent、Authorization等

import requests

# 使用get方法發(fā)送get請(qǐng)求,并獲取響應(yīng)內(nèi)容

res = requests.get('http://bj.xiaozhu.com/')

# pycharm中返回結(jié)果為,說明請(qǐng)求成功,若為404、400則請(qǐng)求網(wǎng)址失敗

print(res)

3.時(shí)候爬蟲需要加入請(qǐng)求頭來偽裝成瀏覽器,以便更好的抓取數(shù)據(jù)。

所以為什么要加入請(qǐng)求頭呢?

第一、先了解請(qǐng)求頭是什么東西

請(qǐng)求頭是在http請(qǐng)求中發(fā)送的一系列額外的信息,它們提供了關(guān)于請(qǐng)求本身、客戶端環(huán)境 、以及請(qǐng)求上下文的信息。請(qǐng)求頭在客戶端與服務(wù)器之間的通信中起到了重要的作用。 我對(duì)請(qǐng)求頭的理解:瀏覽器是人,服務(wù)器是保險(xiǎn)柜,而請(qǐng)求頭就是鑰匙或者說是密碼,沒有相應(yīng)的密碼是無法打開保險(xiǎn)柜的。 如果請(qǐng)求頭不對(duì),瀏覽器就會(huì)覺得你是不對(duì)密碼不會(huì)給你響應(yīng)(開門),你就拿不到信息(錢) 而其中我們最常用的請(qǐng)求頭就是User-Agent:標(biāo)識(shí)客戶端的瀏覽器或應(yīng)用程序類型,以便服務(wù)器能夠針對(duì)不同客戶端進(jìn)行適配。 服務(wù)器可以使用 User-Agent 頭來識(shí)別客戶端的類型和版本,以便為不同的客戶端提供適當(dāng)?shù)捻憫?yīng)。

請(qǐng)求頭的使用方法:

在網(wǎng)頁頁面右擊,點(diǎn)擊檢查,選擇Network,如果沒有刷新一下。復(fù)制User-Agent的內(nèi)容

import requests

headers = {

'User-Agent':

'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36'

}

res = requests.get('http://bj.xiaozhu.com/',headers=headers)

print(res.text)

4.Requests庫有時(shí)候也會(huì)出現(xiàn)問題,而requests庫的錯(cuò)誤和異常主要有:?

ConnectionError:網(wǎng)絡(luò)問題 HTTPError:HTTP請(qǐng)求返回不了成功的狀態(tài)碼 Timeout:請(qǐng)求超時(shí) TooManyRedirects:請(qǐng)求超過了設(shè)定的最大重定向次數(shù) 當(dāng)發(fā)現(xiàn)這些錯(cuò)誤和異常而進(jìn)行代碼修改重新再來時(shí),爬蟲程序又開始重新運(yùn)行了,爬取到的數(shù)據(jù)又會(huì)重新爬取一次, 這對(duì)于爬蟲效率和質(zhì)量來說都是不利的。 這時(shí)可以通過python的try來避免異常了

import requests

headers = {

'User-Agent':

'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36'

}

res = requests.get('http://bj.xiaozhu.com/',headers=headers)

try:

print(res.text)

except ConnectionError: # 出現(xiàn)ConnectionError時(shí),會(huì)執(zhí)行下面的操作

print('拒絕連接')

1.2 BeautifulSoup庫

1.2.1 bs4庫的安裝

Beautiful庫和requests庫的安裝過程

有點(diǎn)不一樣,因?yàn)?BeautifulSoup 庫屬于 bs4,或者說 bs4 是 BeautifulSoup 庫的一個(gè)特定版本。所以我們?cè)趐ycharm中下載bs4,同下載requests庫一樣只需要將搜索的requests換成bs4

1.2.2 BeautifulSoup庫的介紹和使用

1. BeautifulSoup庫的介紹?

通過BeautifulSoup庫可以很輕松地解析Requests庫請(qǐng)求的網(wǎng)頁, 并把網(wǎng)頁源代碼解析為Soup文檔,以便過濾提取數(shù)據(jù)。

2. BeautifulSoup庫的使用

import requests

from bs4 import BeautifulSoup

headers = {'User-Agent':

'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36'

}

res = requests.get('http://bj.xiaozhu.com/',headers = headers)

# BeautifulSoup是一個(gè)Python庫,用于從HTML或XML文檔中提取數(shù)據(jù)。

# res.text是一個(gè)包含HTML代碼的字符串,'html.parser'是解析器的名稱,它告訴BeautifulSoup使用HTML解析器來解析HTML代碼。

soup = BeautifulSoup(res.text,'html.parser') # 對(duì)返回的結(jié)果進(jìn)行解析

print(soup.prettify())

# soup.prettify 是 BeautifulSoup庫中的一個(gè)方法,用于將解析后的HTML代碼格式化為易于閱讀的格式。

1.3 Lxml庫

1.3.1lxml庫的安裝

同上一樣。

1.3.2 lxml庫的介紹

Lxml庫是基于libxml12這一個(gè)XML解析庫的Python封裝。該模塊使用C語言編寫,解析速度比BeautifulSoup更快。

2.綜合實(shí)例———爬取酷狗TOP500的數(shù)據(jù)

import requests

from bs4 import BeautifulSoup

import time

# 爬蟲思路分析

# (1)爬取的內(nèi)容為酷狗榜單中TOP500的音樂信息

# (2)網(wǎng)頁版的酷狗不能手動(dòng)翻頁進(jìn)行下一步的瀏覽,但通過觀察第一頁的URL:

# https://www.kugou.com/yy/rank/home/1-8888.html

# 這里嘗試把數(shù)字1換成2再進(jìn)行瀏覽,恰好返回的是第二頁信息。

# 每頁顯示22首歌,所以總共需要23個(gè)URL

# (3)需要爬取的信息有

# 排名情況

# 歌手

# 歌曲名

# 歌曲時(shí)間

headers = {'User-Agent':

'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'

}

def kugou_info(url):

res = requests.get(url, headers=headers)

res.encoding = 'utf-8'

soup = BeautifulSoup(res.text, 'html.parser')

ranks = soup.select('#rankWrap > div.pc_temp_songlist > ul > li> span.pc_temp_num')

titles = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > a')

times = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > span.pc_temp_tips_r > span')

for rank, title, time in zip(ranks, titles, times):

data = {

'rank': rank.get_text().strip(), # strip()是python中的一個(gè)字符串方法,

# 用于去除字符串的兩端空白字符(包括空格、換行符、制表符)。

# 他不會(huì)刪除字符串中間的空白字符。

'singer': title.get_text().split('-')[1].strip(),

'song': title.get_text().split('-')[0].strip(),

'time': time.get_text().strip()

}

print(data)

if __name__ == '__main__':

urls = ['https://www.kugou.com/yy/rank/home/{}-8888.html'.format(str(i)) for i in range(1, 24)] # 列表推導(dǎo)式

for url in urls:

kugou_info(url)

time.sleep(1)

小拓展:

1.在python中,if_name_=="_main_":是一個(gè)特殊的條件語句,用于判斷當(dāng)前文件是否作為 主程序運(yùn)行,它的主要作用有以下幾點(diǎn): 1.組織代碼:使用這個(gè)語句可以將主程序的邏輯與被導(dǎo)入文件的邏輯分開。在主程序中, 你可以編寫與程序整體運(yùn)行相關(guān)的代碼,而在被導(dǎo)入文件中,你可以編寫模塊級(jí)的函數(shù)和變量

2.避免重復(fù)執(zhí)行:當(dāng)一個(gè)文件被其他文件導(dǎo)入時(shí),_name_的值為文件名,條件語句為假, 后續(xù)代碼不會(huì)被執(zhí)行。這可以避免在導(dǎo)入文件時(shí)執(zhí)行不必要的代碼,提高代碼的效率和可讀性。

3.方便測(cè)試:通過將測(cè)試代碼放在if_name_=="_main_":塊中,可以在單獨(dú)運(yùn)行主程序時(shí)進(jìn)行測(cè)試, 而不會(huì)影響其他文件的導(dǎo)入和使用。

總的來說,if_name_=="_main_":語句提供了一種方便的方式來組織和測(cè)試代碼,使你的代碼更加 模塊化和易于維護(hù)。 ?

2.列表推導(dǎo)式 是一種簡(jiǎn)潔的方式來創(chuàng)新一個(gè)新的列表,其中包含滿足某些條件的元素。它的語法類似于循環(huán),但將 循環(huán)和條件合并到一行中。

列表推導(dǎo)式的基本結(jié)構(gòu)是:[expression for item in iterable] 其中: expression是一個(gè)計(jì)算機(jī)每個(gè)元素的表達(dá)式 item是從可迭代對(duì)象(如列表、元組等)中取出的每個(gè)元素 iterable是可迭代對(duì)象本身

示例: numbers=[1,2,3,4,5] squares=[number ** 2 for number in numbers] print(squares) ?

柚子快報(bào)邀請(qǐng)碼778899分享:爬蟲的第一個(gè)小程序

http://yzkb.51969.com/

文章鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18954146.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄