Python urllib.error.HTTPError:HTTP错误403:禁止

Python urllib.error.HTTPError:HTTP错误403:禁止,python,http,urllib,Python,Http,Urllib,我得到了错误urllib.error.HTTPError:HTTP错误403:在刮取某些页面时被禁止,并且理解将类似hdr={User Agent':'Mozilla/5.0}的内容添加到标头是解决此问题的方法 然而,当我试图刮取的URL位于单独的源文件中时,我无法使其工作。如何/在何处将用户代理添加到下面的代码 from bs4 import BeautifulSoup import urllib.request as urllib2 import time list_open = open

我得到了错误urllib.error.HTTPError:HTTP错误403:在刮取某些页面时被禁止,并且理解将类似hdr={User Agent':'Mozilla/5.0}的内容添加到标头是解决此问题的方法

然而,当我试图刮取的URL位于单独的源文件中时,我无法使其工作。如何/在何处将用户代理添加到下面的代码

from bs4 import BeautifulSoup
import urllib.request as urllib2
import time

list_open = open("source-urls.txt")
read_list = list_open.read()
line_in_list = read_list.split("\n")

i = 0
for url in line_in_list:
    soup = BeautifulSoup(urllib2.urlopen(url).read(), 'html.parser')
    name = soup.find(attrs={'class': "name"})
    description = soup.find(attrs={'class': "description"})
    for text in description:
        print(name.get_text(), ';', description.get_text())
#        time.sleep(5)
    i += 1

您可以使用


希望有帮助

你试过阅读urllib文档吗?或者使用一些更人性化的东西,比如?是的,但我还是不能让它工作。。如果我添加变量hdr={User Agent':'Mozilla/5.0},并将soup行更改为soup=BeautifulSoupurllib2.urlopenurl,headers=hdr.read,'html.parser'Python会在headers单词上给我一个意外的冲击。有什么想法吗?谢谢你没有读我的评论。1.在提问之前请阅读-在本例中,函数没有headers参数。2.正如我所说的,你应该使用请求来代替。请求不在std库中的唯一原因是,它仍在积极开发中,并且维护人员不希望依赖于Python发布计划。使用它。你的生活会更轻松。我通读了文档,但没有完全抓住要点。编程不是我最擅长的,但我还在学习。谢谢看起来像
import requests
hdrs = {'User-Agent': 'Mozilla / 5.0 (X11 Linux x86_64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 52.0.2743.116 Safari / 537.36'}    
for url in line_in_list:
    resp = requests.get(url, headers=hdrs)
    soup = BeautifulSoup(resp.content, 'html.parser')
    name = soup.find(attrs={'class': "name"})
    description = soup.find(attrs={'class': "description"})
    for text in description:
        print(name.get_text(), ';', description.get_text())
#        time.sleep(5)
    i += 1