中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Python爬取求職網requests庫和BeautifulSoup庫

發布時間:2021-10-21 17:04:45 來源:億速云 閱讀:148 作者:iii 欄目:開發技術

這篇文章主要講解了“如何使用Python爬取求職網requests庫和BeautifulSoup庫”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用Python爬取求職網requests庫和BeautifulSoup庫”吧!

目錄
  • 一、requests庫

    • 1、requests簡介

    • 2、安裝requests庫

    • 3、使用requests獲取網頁數據 我們先導入模塊

    • 4、總結requests的一些方法

  • 二、BeautifulSoup庫

    • 1、BeautifulSoup簡介

    • 2、安裝BeautifulSoup庫

    • 3、使用BeautifulSoup解析并提取獲取的數據

    • 4、BeautifulSoup提取數據的方法

一、requests庫

1、requests簡介

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

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

2、安裝requests庫

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

pip install requests

3、使用requests獲取網頁數據 我們先導入模塊

import requests
  • 對想要獲取數據的網站發起請求,以下以qq音樂官網為例

res = requests.get('https://y.qq.com/') #發起請求
print(res) #輸出<Response [200]>

輸出的200其實就是一個響應狀態碼,下面給大家列出有可能返回的各狀態碼含義

狀態碼含義
1xx繼續發送信息
2xx請求成功
3xx重定向
4xx客戶端錯誤
5xx服務端錯誤
  • 獲取qq音樂首頁的網頁源代碼

res = requests.get('https://y.qq.com/')  #發起請求
print(res.text)   #res.text就是網頁的源代碼

4、總結requests的一些方法

屬性含義
res.status_codeHTTP的狀態碼
res.text響應內容的文本
res.content響應內容的二進制形式文本
res.encoding響應內容的編碼

既然我們學好了如何獲取網頁源代碼,接下來我們就學習下怎么用BeautifulSoup庫對我們獲取的內容進行提取。

二、BeautifulSoup庫

1、BeautifulSoup簡介

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

2、安裝BeautifulSoup庫

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

pip install beautifulsoup4

3、使用BeautifulSoup解析并提取獲取的數據

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')  #第一個參數是HTML文本,第二個參數html.parser是Python內置的編譯器
print(soup)  #輸出qq音樂首頁的源代碼

部分輸出結果

如何使用Python爬取求職網requests庫和BeautifulSoup庫

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

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')  #第一個參數是HTML文本,第二個參數html.parser是Python內置的編譯器
print(type(res.text))
print(type(soup))

輸出結果

如何使用Python爬取求職網requests庫和BeautifulSoup庫

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

4、BeautifulSoup提取數據的方法

  • 先來了解兩個最常用的方法

方法作用
find()返回第一個符合要求的數據
find_all()返回所有符合要求的數據

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

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

		<div class="index__hd">
            <h3 class="index__tit"><i class="icon_txt">歌單推薦</i></h3>
        </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">網絡歌曲</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">經典</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()函數

如果想要獲取歌單推薦這一行的內容,我們就需要先對歌單推薦的HTML標簽進行識別,我們發現它在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')  #第一個參數是HTML文本,第二個參數html.parser是Python內置的編譯器
	print(soup.find('i', class_='icon_txt'))  #找到 class_='icon_txt'的 i 標簽	

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

輸出結果

如何使用Python爬取求職網requests庫和BeautifulSoup庫

find_all()函數

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

同樣的,我們發現這幾個主題都在 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')  #第一個參數是HTML文本,第二個參數html.parser是Python內置的編譯器
print(soup.find('i', class_='icon_txt'))
items = soup.find_all('a',attrs={"class" :"index_tab__item js_tag","data-type":"playlist"})

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

輸出結果

如何使用Python爬取求職網requests庫和BeautifulSoup庫

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

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')  #第一個參數是HTML文本,第二個參數html.parser是Python內置的編譯器
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)

輸出結果

如何使用Python爬取求職網requests庫和BeautifulSoup庫

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

感謝各位的閱讀,以上就是“如何使用Python爬取求職網requests庫和BeautifulSoup庫”的內容了,經過本文的學習后,相信大家對如何使用Python爬取求職網requests庫和BeautifulSoup庫這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石屏县| 聂拉木县| 修水县| 青州市| 交口县| 北川| 泾阳县| 正镶白旗| 彭山县| 沁水县| 安多县| 连山| 乌拉特前旗| 宜宾市| 安溪县| 洛宁县| 涟源市| 自治县| 宜川县| 黄平县| 荔浦县| 成武县| 彰武县| 洮南市| 扶余县| 东宁县| 民乐县| 惠来县| 怀仁县| 陆良县| 邯郸市| 沐川县| 汾阳市| 百色市| 太仆寺旗| 攀枝花市| 正定县| 鹿邑县| 蕉岭县| 民乐县| 新晃|