侧边栏壁纸
博主头像
gale-blog博主等级

少年一贯快马扬帆,道阻且长不转弯,要盛大,要绚烂,要哗然,要用理想的泰坦尼克号去撞现实冰川,要当烧赤壁的风,而非借箭草船,要为了一片海,就肯翻万山

  • 累计撰写 39 篇文章
  • 累计创建 5 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

Python爬虫之request

二月在这里
2024-04-10 / 0 评论 / 0 点赞 / 29 阅读 / 2363 字

Python爬虫之Request

使用python的requests库发起get或post请求返回302代码错误,无法解析请求的数据,使用postman发起请求发现状态码200是成功的。这是什么原因?首先排除ip问题,ip有问题的话postman也访问不了。难道是headers出现了问题吗,通过对比发现也不是headers的问题。那就奇了怪了?

其实遇到这种情况大概率是遇到了“原生模拟浏览器 TLS/JA3 指纹的验证”,浏览器和postman都有自带指纹验证,而唯独requests库没有。这就让反爬有了区分人为和爬虫的突破口。

1、使用 pyhttpx 库(推荐)

1.1、安装

pip install pyhttpx

1.2、代码示例

import pyhttpx
headers = {

    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",

}

session = pyhttpx.HttpSession()

res = session.get(url='https://www.baidu.com/',headers=headers)

print(res.text)

2、使用 curl_cffi 库(用得少)

2.1、安装

pip install curl_cffi

2.2、代码示例

from curl_cffi import requests
res = requests.get(url='https://www.baidu.com/',impersonate="chrome101")

print(res.text)

3、使用httpx库(极力推荐)

3.1、安装

pip install httpx

3.2、代码示例

import httpx
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",

}

res = httpx.get(url='https://www.baidu.com/', headers=headers, timeout=10, verify=False)

print(res.text)

原文链接:https://blog.csdn.net/SweetHeartHuaZai/article/details/130983179

0

评论区