日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3获取网页内容_python3获取一个网页特定内容

發布時間:2025/3/15 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3获取网页内容_python3获取一个网页特定内容 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們今天要爬取的網址為:https://www.zhiliti.com.cn/html/luoji/list7_1.html

一、目標:獲取下圖紅色部分內容

即獲取所有的題目以及答案。

二、實現步驟。

分析:

1,首先查看該網站的結構。

分析網頁后可以得到:

我們需要的內容是在該網頁

標簽下,詳細內容鏈接在 的的href中。

但是這樣我們最多只能獲取這一頁的內容

別著急

我們點擊第二頁看一下目標網址有什么變化

我們發現目標網址最后的數字變成了2

再看一下最后一頁

我們可以分析出最后那個數字即第幾頁,所以我們待會可以直接用一個for循環拼接字符串即可。

分析詳細頁面:

我們隨便點擊進入一個閱讀全文

同樣分析網頁結構。

發現我們要的內容在一個塊

標簽中,我們在看一下其他題是不是也是這樣的

很明顯是這樣的,所以我們只需要獲取class為info-zi mb15下的

標簽下的內容即可。

所以我們接下來開始實現。

Let's Go

實現:

1,獲取所有頁

defgetall():for i in range(1,31,1):

getalldoc(i)

i表示第i頁,一共30頁所以i從1變化到30,每次增加1。

2,獲取當前頁詳細頁面的連接

#獲取目標網址第幾頁

defgetalldoc(ii):#字符串拼接成目標網址

testurl = "https://www.zhiliti.com.cn/html/luoji/list7_"+str(ii)+".html"

#使用request去get目標網址

res = requests.get(testurl,headers=headers)#更改網頁編碼--------不改會亂碼

res.encoding="GB2312"

#創建一個BeautifulSoup對象

soup = BeautifulSoup(res.text,"html.parser")#找出目標網址中所有的small標簽#函數返回的是一個list

ans = soup.find_all("small")#用于標識問題

cnt = 1

#先創建目錄

mkdir("E:\\Python爬取的文件\\問題\\第" + str(ii) + "頁\\")for tag inans:#獲取a標簽下的href網址

string_ans=str(tag.a.get("href"))#請求詳細頁面

#返回我們需要的字符串數據

string_write =geturl(string_ans)#寫文件到磁盤

writedoc(string_write,cnt,ii)

cnt= cnt+1

print("第",ii,"頁寫入完成")

先拼接處目標網頁url,然后調用request去請求,更改網頁編碼,使用BeautifulSoup對html文檔進行解析,找出所有標簽,存入一個list,然后遍歷該list,獲取每一個標簽里的

得到詳細頁面的url之后我們調用geturl(自定義函數下面講解)返回我們所需要的題目字符串,最后調用writedoc寫入文件。

3,得到詳細頁面的url后篩選目標字符串

#根據詳細頁面url獲取目標字符串

defgeturl(url):#請求詳細頁面

r = requests.get(url, headers=headers)#改編碼

r.encoding = "GB2312"soup= BeautifulSoup(r.text, "html.parser")#找出類名為 info-zi mb15 下的所有p標簽

ans = soup.find_all(["p", ".info-zi mb15"])#用來儲存最后需要寫入文件的字符串

mlist = ""

for tag inans:#獲取p標簽下的string內容,并進行目標字符串拼接

mlist=mlist+str(tag.string)#返回目標字符串

return mlist

首先請求網頁構建一個BeautifulSoup對象,篩選出class=info-zi mb15的對象下的

標簽內容,返回類型為list,遍歷list,將每個item的string拼接到目標字符串并返回。

4,將目標字符串寫進文件

#寫文件

defwritedoc(ss, i,ii):#打開文件

#編碼為utf-8

with open("E:\\Python爬取的文件\\問題\\第" + str(ii) + "頁\\"+"問題" + str(i) + ".txt", 'w', encoding='utf-8') as f:#寫文件

f.write(ss)print("問題" + str(i) + "文件寫入完成" + "\n")

5,創建指定目錄

defmkdir(path):#去除首位空格

path =path.strip()#去除尾部 \ 符號

path = path.rstrip("\\")#判斷路徑是否存在

#存在 True

#不存在 False

isExists =os.path.exists(path)#判斷結果

if notisExists:#如果不存在則創建目錄

#創建目錄操作函數

os.makedirs(path)returnTrueelse:#如果目錄存在則不創建,并提示目錄已存在

return False

三,最終python文件

importrequestsfrom bs4 importBeautifulSoupimportos#服務器反爬蟲機制會判斷客戶端請求頭中的User-Agent是否來源于真實瀏覽器,所以,我們使用Requests經常會指定UA偽裝成瀏覽器發起請求

headers = {'user-agent': 'Mozilla/5.0'}#寫文件

defwritedoc(ss, i,ii):#打開文件

#編碼為utf-8

with open("E:\\Python爬取的文件\\問題\\第" + str(ii) + "頁\\"+"問題" + str(i) + ".txt", 'w', encoding='utf-8') as f:#寫文件

f.write(ss)print("問題" + str(i) + "文件寫入完成" + "\n")#根據詳細頁面url獲取目標字符串

defgeturl(url):#請求詳細頁面

r = requests.get(url, headers=headers)#改編碼

r.encoding = "GB2312"soup= BeautifulSoup(r.text, "html.parser")#找出類名為 info-zi mb15 下的所有p標簽

ans = soup.find_all(["p", ".info-zi mb15"])#用來儲存最后需要寫入文件的字符串

mlist = ""

for tag inans:#獲取p標簽下的string內容,并進行目標字符串拼接

mlist=mlist+str(tag.string)#返回目標字符串

returnmlist#獲取目標網址第幾頁

defgetalldoc(ii):#字符串拼接成目標網址

testurl = "https://www.zhiliti.com.cn/html/luoji/list7_"+str(ii)+".html"

#使用request去get目標網址

res = requests.get(testurl,headers=headers)#更改網頁編碼--------不改會亂碼

res.encoding="GB2312"

#創建一個BeautifulSoup對象

soup = BeautifulSoup(res.text,"html.parser")#找出目標網址中所有的small標簽

#函數返回的是一個list

ans = soup.find_all("small")#用于標識問題

cnt = 1

#先創建目錄

mkdir("E:\\Python爬取的文件\\問題\\第" + str(ii) + "頁\\")for tag inans:#獲取a標簽下的href網址

string_ans=str(tag.a.get("href"))#請求詳細頁面

#返回我們需要的字符串數據

string_write =geturl(string_ans)#寫文件到磁盤

writedoc(string_write,cnt,ii)

cnt= cnt+1

print("第",ii,"頁寫入完成")defmkdir(path):#去除首位空格

path =path.strip()#去除尾部 \ 符號

path = path.rstrip("\\")#判斷路徑是否存在

#存在 True

#不存在 False

isExists =os.path.exists(path)#判斷結果

if notisExists:#如果不存在則創建目錄

#創建目錄操作函數

os.makedirs(path)returnTrueelse:#如果目錄存在則不創建,并提示目錄已存在

returnFalsedefgetall():for i in range(1,31,1):

getalldoc(i)if __name__ == "__main__":

getall()

四,運行結果

五,總結

一般網頁的編碼為utf-8編碼,但是這個網頁就不一樣編碼為GB2312,我第一次請求返回的是亂碼,如果python向一個不存在的目錄進行寫文件會報錯,所以寫文件之前要先判斷路徑是否正確存在,不存在就要創建路徑,請求頭請使用下面這個

#服務器反爬蟲機制會判斷客戶端請求頭中的User-Agent是否來源于真實瀏覽器,所以,我們使用Requests經常會指定UA偽裝成瀏覽器發起請求

headers = {'user-agent': 'Mozilla/5.0'}

總結

以上是生活随笔為你收集整理的python3获取网页内容_python3获取一个网页特定内容的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。