爬取網(wǎng)頁上所有鏈接
前言
最近也學(xué)了點(diǎn)爬蟲的東西。今天就先給大家寫一個(gè)簡單的爬蟲吧。循序漸進(jìn),慢慢來哈哈哈哈哈哈哈哈哈哈哈
一、基本內(nèi)容
主要是以下幾部分(下文基本會(huì)按照這個(gè)步驟來寫):
- 導(dǎo)入需要的庫
- 要測(cè)試的網(wǎng)頁
- 生成代理,請(qǐng)求網(wǎng)頁
- 請(qǐng)求成功,解析網(wǎng)頁,找到并保存想要的東西
- 請(qǐng)求失敗,返回相應(yīng)狀態(tài)碼
二、代碼編寫
1.引入庫
代碼如下:
import requests
from bs4 import BeautifulSoup
requests: 這是一個(gè)非常流行的 Python 庫,用于發(fā)送 HTTP 請(qǐng)求。它可以方便地讓我們獲取網(wǎng)頁內(nèi)容、下載文件、提交表單等網(wǎng)絡(luò)操作。
BeautifulSoup: 這是一個(gè)用于解析 HTML 和 XML 文檔的 Python 庫。它能夠?qū)?fù)雜的HTML文檔轉(zhuǎn)換成樹形結(jié)構(gòu),使得我們可以輕松地搜索、遍歷和修改文檔中的元素。
2.測(cè)試網(wǎng)頁
代碼如下:
# 目標(biāo)網(wǎng)頁地址
url = 'http://www.santostang.com/'
3.請(qǐng)求網(wǎng)頁
代碼如下:
# 定義請(qǐng)求頭的瀏覽器代理,偽裝成瀏覽器
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',
'host': 'www.santostang.com'}
# 請(qǐng)求網(wǎng)頁
response = requests.get(url, headers=headers)
print(response.text)
請(qǐng)求頭header提供了關(guān)于請(qǐng)求、相應(yīng)或其他發(fā)送實(shí)體的信息??傊痪湓?,這個(gè)很重要不能少。
不清楚這個(gè)請(qǐng)求頭怎么搞的不要擔(dān)心,下面我會(huì)另起一章節(jié)告訴大家怎么弄。
response.text 的內(nèi)容如下圖(下面會(huì)從這個(gè)里面檢索獲取我們想要的信息):
4.解析網(wǎng)頁并保存
代碼如下:
# 狀態(tài)碼為200,請(qǐng)求成功
if response.status_code == 200:
# 打印狀態(tài)碼
print('Status Code: ', response.status_code)
# 解析 HTML 文檔
soup = BeautifulSoup(response.text, 'html.parser')
# 找到所有的 <a>, <img> 和 <form> 標(biāo)簽
elements = soup.find_all(['a', 'img', 'form'])
# 打開一個(gè)文本文檔并寫入
with open('url.text', 'w', encoding='utf-8') as f:
# 打印每個(gè)元素的 href、src 或 action 屬性
for element in elements:
if element.name == 'a':
link = element.get('href')
elif element.name == 'img':
link = element.get('src')
elif element.name == 'form':
link = element.get('action')
if link is not None:
# 每寫入一個(gè)鏈接另起一行
f.write(link + '\n')
else:
# 請(qǐng)求未成功,返回相應(yīng)的狀態(tài)碼
print(f'Failed to fetch the page with status code {response.status_code}')
第一步:判斷是否請(qǐng)求成功,成功則進(jìn)行下一步,失敗則返回相應(yīng)的狀態(tài)碼。
第二步:先解析解析 HTML 文檔(response.text)。
第三步:找到所有鏈接前面的標(biāo)簽都有啥。
第四步:根據(jù)標(biāo)簽定位到相應(yīng)的鏈接,獲取它們。
第五步:判定標(biāo)簽后面的不為空,寫入這些鏈接。
下面是本人測(cè)試的效果圖:
三、如何定義請(qǐng)求頭?
很簡單。首先,隨便打開一個(gè)網(wǎng)頁。然后按一下F12,接著按照下圖上的步驟一步一步來,就可以得到想要的東西。文章來源:http://www.zghlxwxcb.cn/news/detail-786248.html
總結(jié)
這樣,一個(gè)簡單的爬蟲小程序就搞定了。慢慢來吧,后續(xù)教大家爬一些有用的東西(# ^ . ^ #)。文章來源地址http://www.zghlxwxcb.cn/news/detail-786248.html
到了這里,關(guān)于Python 爬蟲之簡單的爬蟲(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!