Python爬取HTTPS网页数据
Python爬取HTTPS网页数据失败
第一种方式
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'
}
# r = requests.get(url, headers=headers)
#
# df = pd.read_html(r.text)
# print(df)
第二种方式
# encoding:UTF-8
import urllib.request
cookies = "xxxxxx"
#
req = urllib.request.Request(url=url, headers=headers, cookies=cookies)
#
res = urllib.request.urlopen(req)
data = res.read()
print(data)
第三种方式
# resp = requests.get(url, headers=headers)
# soup = BeautifulSoup(resp.text, 'html.parser')
#
# # 取得各篇 blog 的所有文字
# divs = soup.find_all('div', 'sc-euitrJ')
# for div in divs:
# print(div.text)
结果都是提示 urllib.error.HTTPError: HTTP Error 403: Forbidden
请问这种情况一般是什么原因引起的?
header全加了
headers = {
"Accept": "* / *",
"Accept - Encoding": "gzip, deflate, br",
"Accept - Language": "en - US, en;q = 0.5",
"Cache - Control": "no - cache",
"Connection": "keep - alive",
"Content - Length": 424,
"Content - Type": "application / json",
# "Cookie": "_ga=GA1.2.467839XXXX; _gid=GA1.2.107XXXX",
"Host": "xxxxxx",
"Origin": "https: // xxxx",
"Pragma": "no - cache",
"Referer":
"https: // XXXX",
"TE": "Trailers",
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'
}
r = requests.post(url, headers=headers, verify=False)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我也经常写爬虫,除非特殊情况,请求的头部(header)一般只需要下面中的几个:
再根据请求的返回信息(403 Forbidden)可以猜测应该是 Cookie 不对或者没有设置 Cookie。
另外,如果网站的认证信息不是放在 Cookie 中的话,比如用的是 session,可以考虑使用
requests.Session()
先创建一个会话,并使用这个会话进行登录,然后再基于这个会话进行访问网站内容。希望可以相互学习爬虫相关的内容,这是我的邮箱:mailto:k8scat@gmail.com 。
可能的原因很多。
403 是 HTTP 服务器返回的,如果你在爬一个静态网站,那一般就是 url 出问题了。
如果你在爬一个非静态的网站,那被反爬、给错参数、需要登录之类的可能更大一些。
打印原始响应信息看看. 另外用浏览器返回一下, 然后把浏览器里面的header全加到python里面再试试.