首页 > 解决方案 > “set”对象没有“setdefault”属性。使用请求抓取数据时出错

问题描述

我正在尝试使用 python 请求访问一个网站,但它给了我错误。

import requests 
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'}
URL = ""
PROXY = {'https://surfproxy.de.db.com:8080' }
response = requests.get(URL , proxies = PROXY, headers: headers)

错误日志:

文件“”,第 1 行,在 runfile('C:/Users/vermanjb/JiraScrapping.py', wdir='C:/Users/vermanjb')

文件“C:\Program Files\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 699 行,运行文件 execfile(文件名,命名空间)

文件“C:\Program Files\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 88 行,在 execfile exec(compile(open(filename, 'rb').read(), filename , 'exec'), 命名空间)

文件“C:/Users/vermanjb/JiraScrapping.py”,第 12 行,响应 = requests.get(URL , proxies = PROXY)

文件“C:\Program Files\Anaconda3\lib\site-packages\requests\api.py”,第 67 行,在 get return request('get', url, params=params, **kwargs)

文件“C:\Program Files\Anaconda3\lib\site-packages\requests\api.py”,第 53 行,请求返回 session.request(method=method, url=url, **kwargs)

文件“C:\Program Files\Anaconda3\lib\site-packages\requests\sessions.py”,第 459 行,在请求 prep.url、代理、流、验证、证书中

文件“C:\Program Files\Anaconda3\lib\site-packages\requests\sessions.py”,第 619 行,在 merge_environment_settings proxies.setdefault(k, v)

AttributeError:“set”对象没有属性“setdefault”

标签: pythonbeautifulsouppython-requests

解决方案


您至少应该解决两个问题:

  1. proxies参数应该是一个 dict ,而不是一个集合。
  2. 您的headers参数中有语法错误。

试试这个:

headers = {'User-Agent': 'Mozilla/5.0...'}
url = 'http://www.yoursite.com/'
proxies = {
    'http': 'http://surfproxy.de.db.com:8080',
    'https': 'http://surfproxy.de.db.com:8080'
}
response = requests.get(url , proxies=proxies, headers=headers)

推荐阅读