最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬取求職網(wǎng)requests庫和BeautifulSoup庫使用詳解

 更新時間:2021年10月21日 16:07:57   作者:HuiSoul  
這篇文章主要為大家介紹了Python爬取求職網(wǎng)及其他網(wǎng)頁時requests庫和BeautifulSoup庫的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助

一、requests庫

1、requests簡介

requests庫就是一個發(fā)起請求的第三方庫,requests允許你發(fā)送HTTP/1.1 請求,你不需要手動為 URL 添加查詢字串,也不需要對 POST 數(shù)據(jù)進行表單編碼。Keep-alive 和 HTTP 連接池的功能是 100% 自動化的,一切動力都來自于根植在 requests 內(nèi)部的 urllib3。簡單來說有了這個庫,我們就能輕而易舉向?qū)?yīng)的網(wǎng)站發(fā)起請求,從而對網(wǎng)頁數(shù)據(jù)進行獲取,還可以獲取服務(wù)器返回的響應(yīng)內(nèi)容和狀態(tài)碼。

requesets中文文檔頁面https://requests.kennethreitz.org/zh_CN/latest/

2、安裝requests庫

一般電腦安裝的Python都會自帶這個庫,如果沒有就可在命令行輸入下面這行代碼安裝

pip install requests

3、使用requests獲取網(wǎng)頁數(shù)據(jù) 我們先導(dǎo)入模塊

import requests
  • 對想要獲取數(shù)據(jù)的網(wǎng)站發(fā)起請求,以下以qq音樂官網(wǎng)為例
res = requests.get('https://y.qq.com/') #發(fā)起請求
print(res) #輸出<Response [200]>

輸出的200其實就是一個響應(yīng)狀態(tài)碼,下面給大家列出有可能返回的各狀態(tài)碼含義

狀態(tài)碼 含義
1xx 繼續(xù)發(fā)送信息
2xx 請求成功
3xx 重定向
4xx 客戶端錯誤
5xx 服務(wù)端錯誤
  • 獲取qq音樂首頁的網(wǎng)頁源代碼
res = requests.get('https://y.qq.com/')  #發(fā)起請求
print(res.text)   #res.text就是網(wǎng)頁的源代碼

4、總結(jié)requests的一些方法

屬性 含義
res.status_code HTTP的狀態(tài)碼
res.text 響應(yīng)內(nèi)容的文本
res.content 響應(yīng)內(nèi)容的二進制形式文本
res.encoding 響應(yīng)內(nèi)容的編碼

既然我們學(xué)好了如何獲取網(wǎng)頁源代碼,接下來我們就學(xué)習下怎么用BeautifulSoup庫對我們獲取的內(nèi)容進行提取。

二、BeautifulSoup庫

1、BeautifulSoup簡介

BeautifulSoup是Python里的第三方庫,處理數(shù)據(jù)十分實用,有了這個庫,我們就可以根據(jù)網(wǎng)頁源代碼里對應(yīng)的HTML標簽對數(shù)據(jù)進行有目的性的提取。BeautifulSoup庫一般與requests庫搭配使用。 不熟的HTML標簽的最好去百度下,了解一些常用的標簽。

2、安裝BeautifulSoup庫

同樣的如果沒用這個庫,可以通過命令行輸入下列代碼安裝

pip install beautifulsoup4

3、使用BeautifulSoup解析并提取獲取的數(shù)據(jù)

import requests
from bs4 import BeautifulSoup
header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'}
res = requests.get('https://y.qq.com/',headers=header)  #headers是一種反爬蟲措施
soup = BeautifulSoup(res.text,'html.parser')  #第一個參數(shù)是HTML文本,第二個參數(shù)html.parser是Python內(nèi)置的編譯器
print(soup)  #輸出qq音樂首頁的源代碼

部分輸出結(jié)果

在這里插入圖片描述

看到輸出結(jié)果,我們已經(jīng)成功將網(wǎng)頁源代碼解析成BeautifulSoup對象。這時可能有人就會問res.text輸出的不就是網(wǎng)頁代碼了嗎,何苦再將它轉(zhuǎn)為BeautifulSoup對象呢?
我們先來通過type()函數(shù)看下它們的類型

import requests
from bs4 import BeautifulSoup
header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 	Chrome/87.0.4280.66 Safari/537.36'}
res = requests.get('https://y.qq.com/',headers=header)  #headers是一種反爬蟲措施
soup = BeautifulSoup(res.text,'html.parser')  #第一個參數(shù)是HTML文本,第二個參數(shù)html.parser是Python內(nèi)置的編譯器
print(type(res.text))
print(type(soup))

輸出結(jié)果

在這里插入圖片描述

我們可以看到res.text的類型是字符串類型,而soup則是BeautifulSoup對象類型。相比于res.text的字符串類型,soup的BeautifulSoup對象類型擁有著更多可用的方法,以便我們快速提取出需要的數(shù)據(jù)。這就是為什么我們要多此一步了。

4、BeautifulSoup提取數(shù)據(jù)的方法

  • 先來了解兩個最常用的方法
方法 作用
find() 返回第一個符合要求的數(shù)據(jù)
find_all() 返回所有符合要求的數(shù)據(jù)

這兩個函數(shù)傳入的參數(shù)就是我們對數(shù)據(jù)的篩選條件了,我們可以向這兩個函數(shù)分別傳入什么參數(shù)呢?

我們以下面在qq音樂首頁截取的源代碼片段為例,試用兩個函數(shù)

		<div class="index__hd">
            <h2 class="index__tit"><i class="icon_txt">歌單推薦</i></h2>
        </div>
        <!-- 切換 -->
        <div class="mod_index_tab" data-stat="y_new.index.playlist">
	<a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"              class="index_tab__item index_tab__item--current js_tag" data-index="0" data-type="recomPlaylist" data-id="1">為你推薦</a>
		    <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"              class="index_tab__item js_tag" data-type="playlist" data-id="3056">網(wǎng)絡(luò)歌曲</a>
	               <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"              class="index_tab__item js_tag" data-type="playlist" data-id="3256">綜藝</a>
		    <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"              class="index_tab__item js_tag" data-type="playlist" data-id="59">經(jīng)典</a>
		    <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"              class="index_tab__item js_tag" data-type="playlist" data-id="3317">官方歌單</a>
		    <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"              class="index_tab__item js_tag" data-type="playlist" data-id="71">情歌</a>
        </div>

find()函數(shù)

如果想要獲取歌單推薦這一行的內(nèi)容,我們就需要先對歌單推薦的HTML標簽進行識別,我們發(fā)現(xiàn)它在class="icon_txt"的i標簽下,接著就可以通過以下這種方法進行提取

	import requests
	from bs4 import BeautifulSoup
	header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'}
	res = requests.get('https://y.qq.com/',headers=header)  #headers是一種反爬蟲措施
	soup = BeautifulSoup(res.text,'html.parser')  #第一個參數(shù)是HTML文本,第二個參數(shù)html.parser是Python內(nèi)置的編譯器
	print(soup.find('i', class_='icon_txt'))  #找到 class_='icon_txt'的 i 標簽
	

因為 class 是 Python 中定義類的關(guān)鍵字,所以用 class_ 表示 HTML 中的 class

輸出結(jié)果

在這里插入圖片描述

find_all()函數(shù)

如果我們想要把歌單推薦的全部主題提取下來的話,就要用到find_all()函數(shù)

同樣的,我們發(fā)現(xiàn)這幾個主題都在 class="index_tab__item js_tag"的 a標簽下,這時為了避免篩選到源代碼中其他同為class="index_tab__item js_tag"的標簽,我們需要再加多一個條件data-type=“playlist”,具體怎么操作呢?

import requests
from bs4 import BeautifulSoup
header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'}
res = requests.get('https://y.qq.com/',headers=header)  #headers是一種反爬蟲措施
soup = BeautifulSoup(res.text,'html.parser')  #第一個參數(shù)是HTML文本,第二個參數(shù)html.parser是Python內(nèi)置的編譯器
print(soup.find('i', class_='icon_txt'))
items = soup.find_all('a',attrs={"class" :"index_tab__item js_tag","data-type":"playlist"})

實現(xiàn)的方法就是在第二個參數(shù)處傳入一個鍵值對,在里面添加篩選的屬性

輸出結(jié)果

在這里插入圖片描述

通過上面兩個小案例,我們發(fā)現(xiàn)find()和find_all()函數(shù)返回的是Tag對象和Tag對象組成的列表,而我們需要的并不是這一大串東西,我們需要的只是Tag對象的text屬性或者href(鏈接)屬性,實現(xiàn)代碼如下

import requests
from bs4 import BeautifulSoup
header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'}
res = requests.get('https://y.qq.com/',headers=header)  #headers是一種反爬蟲措施
soup = BeautifulSoup(res.text,'html.parser')  #第一個參數(shù)是HTML文本,第二個參數(shù)html.parser是Python內(nèi)置的編譯器
tag1=soup.find('i', class_='icon_txt')
print(tag1.text)
items = soup.find_all('a',attrs={"class" :"index_tab__item js_tag","data-type":"playlist"})
for i in items:  #遍歷列表
    tag2=i.text
    print(tag2)
    

輸出結(jié)果

在這里插入圖片描述

這樣我們就成功把主題的文本內(nèi)容獲取了,而想要提取標簽中的屬性值,則可以用對象名[‘屬性']的方法獲取,這里就不演示了

本次分享就到這里了,在下次介紹完反爬蟲和如何將數(shù)據(jù)寫進文件的方法后,我會結(jié)合我所寫的三篇文章的方法來做一個爬取求職網(wǎng)的實例跟大家分享,有興趣的可以看下,謝謝大家!

希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 使用PIL numpy 實現(xiàn)拼接圖片的示例

    Python 使用PIL numpy 實現(xiàn)拼接圖片的示例

    今天小編就為大家分享一篇Python 使用PIL numpy 實現(xiàn)拼接圖片的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 利用Python在一個文件的頭部插入數(shù)據(jù)的實例

    利用Python在一個文件的頭部插入數(shù)據(jù)的實例

    下面小編就為大家分享一篇利用Python在一個文件的頭部插入數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 解決Building?wheel?for?wrapt?(setup.py)?...?error的問題

    解決Building?wheel?for?wrapt?(setup.py)?...?error的問題

    這篇文章主要介紹了解決Building?wheel?for?wrapt?(setup.py)?...?error的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python正則表達式re.compile()和re.findall()詳解

    Python正則表達式re.compile()和re.findall()詳解

    re?模塊提供了不少有用的函數(shù),用以匹配字符串,下面這篇文章主要給大家介紹了關(guān)于Python正則表達式re.compile()和re.findall()的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Python中使用md5sum檢查目錄中相同文件代碼分享

    Python中使用md5sum檢查目錄中相同文件代碼分享

    這篇文章主要介紹了Python中使用md5sum檢查目錄中相同文件代碼分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-02-02
  • Python中常見的數(shù)制轉(zhuǎn)換有哪些

    Python中常見的數(shù)制轉(zhuǎn)換有哪些

    在本篇文章里小編給大家整理的是一篇關(guān)于Python中常見的數(shù)制轉(zhuǎn)換例舉內(nèi)容,有需要的朋友們可以跟著學(xué)習下。
    2020-05-05
  • 詳解使用CUDA+OpenCV加速yolo v4性能

    詳解使用CUDA+OpenCV加速yolo v4性能

    這篇文章主要介紹了使用CUDA+OpenCV加速yolo v4性能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-04-04
  • opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間的過程

    opencv+圖像處理(Image Processing in OpenCV) 

    這篇文章主要介紹了opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Python中所有子圖標簽Legend顯示問題記錄

    Python中所有子圖標簽Legend顯示問題記錄

    在Python中,利用matplotlib創(chuàng)建的子圖可以很容易地添加圖例,無論是為每個子圖單獨添加,還是統(tǒng)一在一起,本文詳細介紹了如何在多個子圖中顯示圖例,包括全局圖例的顯示、圖例樣式的調(diào)整和圖例位置的調(diào)整等,需要的朋友可以參考下
    2024-12-12
  • Python獲取B站粉絲數(shù)的示例代碼

    Python獲取B站粉絲數(shù)的示例代碼

    這篇文章主要介紹了Python獲取B站粉絲數(shù)的示例代碼,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論

上犹县| 贵德县| 贡嘎县| 太和县| 长顺县| 昔阳县| 永济市| 沧州市| 肃南| 佛教| 阿尔山市| 洞头县| 南安市| 绥芬河市| 农安县| 馆陶县| 和田县| 黔南| 和平区| 甘德县| 连平县| 大竹县| 聂拉木县| 平度市| 奇台县| 和平区| 犍为县| 盖州市| 贞丰县| 怀宁县| 葵青区| 上高县| 民乐县| 邯郸市| 扶沟县| 遂平县| 湟中县| 新津县| 平度市| 宜良县| 潞城市|