【Python網絡爬蟲整理記錄 D:07】———User-Agent反爬蟲以及Cookie反爬蟲

User-Agent反爬蟲

# -*- coding: utf-8 -*-
# @Time    : 2020/2/22 20:19
# @Author  : Dchanong_
# @FileName: User-Agent反爬蟲.py
# @Software: PyCharm
# @Cnblogs :https://blog.csdn.net/Dchanong_
import requests
from bs4 import BeautifulSoup

# 目標鏈接
url = 'http://www.porters.vip/verify/uas/index.html#'
# 如果註釋掉headers信息,爬蟲請求將返回403,請求失敗
# 添加headers中的User-Agent字段,即可返回200,請求成功
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
'''
使用BeautifulSoup爬取本週熱點內容
'''
for data in soup.find_all('li', {'class': 'list-group-item'}):
    print(data.string)
# 三門峽市陝州區一中餐廳管理工作...
# 鶴壁七中多措並舉助推“六城聯創...
# 沙溪中學開展“掃黑除惡”專項宣...
# 中牟縣晨陽路學校:“點綴生活 ...
# 上饒市第二保育院開展預防手足口...

'''
User-Agent就是請求字段之一,服務器能夠從User-Agent對應的值中識別客戶端使用的操作系統、
CPU類型、瀏覽器、瀏覽器引擎、操作系統語言等。
瀏覽器User-Agent字段值的格式爲:
瀏覽器標識 (操作系統標識;加密等級標識;瀏覽器語言) 渲染引擎標識 版本信息

服務器端選擇User-Agent作爲校驗對象,是因爲很多編程語言和軟件有默認的標識。
在發起網絡請求的時候,這個標識會作爲請求頭參數中的User-Agent字段值被髮送到服務器。
如果使用Python中Requests庫向服務器發起HTTP請求時,服務器讀取的User-Agent值爲:
python-requests/2.21.0
很顯然,當訪問次數過多時,服務器識別出來爬蟲,會將此User-Agent拉入黑名單

所以,實際爬蟲時,可以建立一個User-Agent池,使用時隨機抽取
常見的用於反爬蟲的頭域還有 Host 和 Referer
當爬蟲請求時經常失敗,就要考慮是不是User-Agent反爬蟲手段了
'''

Cookie反爬蟲

# -*- coding: utf-8 -*-
# @Time    : 2020/2/22 20:50
# @Author  : Dchanong_
# @FileName: Cookie反爬蟲.py
# @Software: PyCharm
# @Cnblogs :https://blog.csdn.net/Dchanong_
import requests
from bs4 import BeautifulSoup

'''
目標爬取 公告標題
直接請求,響應碼:200,請求成功
'''
url = 'http://www.porters.vip/verify/cookie/content.html'
headers = {
    'Cookie': 'isfirst=789kq7uc1pp4c'
}
response = requests.get(url, headers=headers)
print(response.status_code)  # 200
soup = BeautifulSoup(response.text, 'lxml')
print(soup.find('h1').text)  # “挑戰者”徒步旅行活動安全公告
print(response.text)
'''
返回的不是我們目標頁面的公告標題,查看response.text響應正文,發現並不是我們的目標網頁
並且嘗試在Firefox瀏覽器開發者工具中network欄中發現,content.html文件的響應碼爲302
響應碼302表示重定向,所以,網站的開發人員,希望用戶從統一的入口進入,
對直接訪問公告內容頁的請求進行重定向。
'''
# 添加cookie進行請求,請求成功,響應正文也是我們需要的內容
print(soup.find('h1').text)  # 史上最嚴格的“挑戰者”徒步旅行活動安全公告 你可以選擇遵守或退出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章