鱼C论坛

 找回密码
 立即注册
查看: 1845|回复: 4

[已解决]python爬虫响应400

[复制链接]
发表于 2023-4-19 10:06:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助!!!!急急急
我的网址在浏览器中可以打开,但是用session.get()会返回response 400,请求方法是正确的,求助解答~helphelp
最佳答案
2023-4-22 10:10:59
当您使用 session.get() 请求网址时,返回 400 状态码通常表示请求中包含了无效的参数或格式不正确。以下是一些可能导致此问题的原因和解决方法:

网址中包含特殊字符或中文字符。在发送 HTTP 请求时,URL 中的特殊字符和中文字符需要进行 URL 编码。您可以使用 Python 内置的 urllib.parse 模块中的 quote() 函数来对 URL 进行编码,例如:
import requests
from urllib.parse import quote

url = 'http://example.com/中文字符'
encoded_url = quote(url, safe='/:?=&')
response = requests.get(encoded_url)
请求头信息不正确。有些网站会要求在请求头信息中包含特定的参数,例如 User-Agent、Referer 等。如果请求头信息不正确,服务器可能会返回 400 状态码。您可以使用 session.headers 属性来设置请求头信息,例如:
import requests

url = 'http://example.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Referer': 'http://example.com'
}
session = requests.Session()
session.headers.update(headers)
response = session.get(url)
网站需要登录或进行身份验证。有些网站需要在登录后才能进行访问,如果您没有进行登录或者登录信息不正确,服务器可能会返回 400 状态码。您可以在请求中添加相应的登录信息或者使用相关的登录 API 进行登录后再进行访问。

希望以上解决方法可以帮助您解决问题。如果问题仍然存在,您可以尝试在网上查找更多解决方案,或者联系相关技术支持团队以获取更多帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-19 10:23:21 | 显示全部楼层
.代码呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-19 10:27:32 | 显示全部楼层

代码是这样:h = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}
session = requests.Session()
session.headers = h
session.get('https://xueqiu.com/')
session.get('https://xueqiu.com/cubes/rebalancing/history.json?cube_symbol=ZH2293412&count=20&page=1')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-19 10:45:09 | 显示全部楼层
本帖最后由 isdkz 于 2023-4-19 10:46 编辑
Chloe· 发表于 2023-4-19 10:27
代码是这样:h = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTM ...


你这个在浏览器的请求也是400的,你虽然能看到有东西,但是你打开开发者工具看到的状态码也是400,

你在python中也能获取到那个你在浏览器看到的东西,400 可能是参数不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 10:10:59 | 显示全部楼层    本楼为最佳答案   
当您使用 session.get() 请求网址时,返回 400 状态码通常表示请求中包含了无效的参数或格式不正确。以下是一些可能导致此问题的原因和解决方法:

网址中包含特殊字符或中文字符。在发送 HTTP 请求时,URL 中的特殊字符和中文字符需要进行 URL 编码。您可以使用 Python 内置的 urllib.parse 模块中的 quote() 函数来对 URL 进行编码,例如:
import requests
from urllib.parse import quote

url = 'http://example.com/中文字符'
encoded_url = quote(url, safe='/:?=&')
response = requests.get(encoded_url)
请求头信息不正确。有些网站会要求在请求头信息中包含特定的参数,例如 User-Agent、Referer 等。如果请求头信息不正确,服务器可能会返回 400 状态码。您可以使用 session.headers 属性来设置请求头信息,例如:
import requests

url = 'http://example.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Referer': 'http://example.com'
}
session = requests.Session()
session.headers.update(headers)
response = session.get(url)
网站需要登录或进行身份验证。有些网站需要在登录后才能进行访问,如果您没有进行登录或者登录信息不正确,服务器可能会返回 400 状态码。您可以在请求中添加相应的登录信息或者使用相关的登录 API 进行登录后再进行访问。

希望以上解决方法可以帮助您解决问题。如果问题仍然存在,您可以尝试在网上查找更多解决方案,或者联系相关技术支持团队以获取更多帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-12 19:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表