首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web爬行中的“headers=headers”问题

web爬行中的“headers=headers”问题
EN

Stack Overflow用户
提问于 2020-04-25 01:00:40
回答 2查看 38关注 0票数 0

我正在练习我的网页爬行从网站获取文本,但我的‘标题=标题’有问题。当我运行.py时,它会像这样返回:

代码语言:javascript
复制
AttributeError: 'set' object has no attribute 'items'

我的代码如下:

代码语言:javascript
复制
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抓取不需要它,但有时它需要它。我在谷歌上搜索的结果也没那么有用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-25 01:07:34

标题需要是一个dict,但是您创建了一个set。语法类似,但请注意以下内容是如何具有键的:值对

代码语言:javascript
复制
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'}
票数 0
EN

Stack Overflow用户

发布于 2020-04-25 01:08:06

文档headers for requests.get()必须是dict

如果要将headers添加到请求中,只需将dict传递给headers参数即可。

你通过了一个set。集合没有任何items()方法。这就是为什么你要得到这个AttributeError

代码语言:javascript
复制
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变量添加一个键。

代码语言:javascript
复制
headers = {'User-Agent': 'Mozilla/5.0 .....'}

编辑:更新了“用户代理”标题的键值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61419713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档