我正在练习我的网页爬行从网站获取文本,但我的‘标题=标题’有问题。当我运行.py时,它会像这样返回:
AttributeError: 'set' object has no attribute 'items'我的代码如下:
import requests
import time
import re
headers = {'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}
f = open('/Users/pgao/Desktop/doupo.rtf','a+')
def get_info(url):
res = requests.get(url, headers = headers)
if res.status_code == 200:
contents = re.findall('<p>(.*?)</p>', res.content.decode('utf-8'),re.S)
for content in contents:
f.write(content+'\n')
else:
pass
if __name__ == '__main__':
urls = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(2,10)]
for url in urls:
get_info(url)
time.sleep(1)
f.close()我为使用'headers = headers‘的原因而挣扎,因为有一段时间,web抓取不需要它,但有时它需要它。我在谷歌上搜索的结果也没那么有用。
发布于 2020-04-25 01:07:34
标题需要是一个dict,但是您创建了一个set。语法类似,但请注意以下内容是如何具有键的:值对
header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}发布于 2020-04-25 01:08:06
从文档,headers for requests.get()必须是dict。
如果要将headers添加到请求中,只需将
dict传递给headers参数即可。
你通过了一个set。集合没有任何items()方法。这就是为什么你要得到这个AttributeError。
headers = {'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}
print(type(headers))
# <class 'set'>向headers变量添加一个键。
headers = {'User-Agent': 'Mozilla/5.0 .....'}编辑:更新了“用户代理”标题的键值。
https://stackoverflow.com/questions/61419713
复制相似问题