Python抓取错误403 + urloopen解码问题



我目前正试图第一次提取网站信息,所以我严格遵循教程。我的代码是这样开始的:

import requests
from bs4 import BeautifulSoup

url = 'https://www.unep.org/resources?f[0]=category%3A451&f[1]=category%3A452&f[2]=category%3A453&f[3]=category%3A454&f[4]=category%3A455&f[5]=type%3A55&keywords=&'
response = requests.get(url)

但是当我运行我的代码时,我有一个错误403(如果我理解得好,这是因为网站安全)

然后我尝试解决以下代码:

req = Request('https://www.unep.org/resources?f[0]=category%3A451&f[1]=category%3A452&f[2]=category%3A453&f[3]=category%3A454&f[4]=category%3A455&f[5]=type%3A55&keywords=&', headers={'User-Agent': 'Mozilla/5.0'})
rep = urlopen(req).read()

但是当我用下面的代码继续我的教程时:

if response.ok:
print(response.text)

我有一个错误告诉:AttributeError: 'bytes'对象没有属性'ok'和AttributeError: 'bytes'对象没有属性'text'

然后我试着"解码";:

response = rep.decode('utf-8')

但是我得到了:AttributeError: 'str'对象没有属性'ok'和AttributeError: 'str'对象没有属性'text'

我有点迷路了,有没有办法通过获得我的教程代码提供的相同结果来解决这个问题?

认为可能没有什么问题,也许你的请求是"咄咄逼人"的。无法重现此行为-以下代码将从该url获取所有标题。

import requests
from bs4 import BeautifulSoup
headers = {"user-agent": "Mozilla/5.0"}
url = 'https://www.unep.org/resources?f[0]=category%3A451&f[1]=category%3A452&f[2]=category%3A453&f[3]=category%3A454&f[4]=category%3A455&f[5]=type%3A55&keywords=&'
r = requests.get(url,headers=headers)
print(*[h.get_text() for h in BeautifulSoup(r.text).select('h5')],sep='n')

提供可持续的食物珊瑚礁恢复可以拯救其中之一对气候变化最脆弱的生态系统是什么?记忆的森林在巴西:为20万COVID-19受害者种植20万棵树播客在基于自然的金融解决方案中的实现随着气候变化的冲击越来越大,世界必须加大努力适应这一变化关于海水淡化要知道的五件事

相关内容

  • 没有找到相关文章

最新更新