【Python网络爬虫整理记录 D:07】———User-Agent反爬虫以及Cookie反爬虫

文章目录

    • 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)  # 史上最严格的“挑战者”徒步旅行活动安全公告 你可以选择遵守或退出

你可能感兴趣的:(#,【Python网络爬虫】)