Python 使用urllib2打开页面-变音符号
我正在尝试使用urllib2打开多个页面。问题是有些页面无法打开。它返回Python 使用urllib2打开页面-变音符号,python,html,urllib2,Python,Html,Urllib2,我正在尝试使用urllib2打开多个页面。问题是有些页面无法打开。它返回urllib2.HTTPerror:HTTP错误400:Bad请求 我从另一个网页(页面的头部是charset=“utf-8”)获取此页面的HREF。 只有当我试图打开url中包含“č”、“ž”或“ř”的页面时,才会返回错误 代码如下: def getSoup(url): req = urllib2.Request(url) response = urllib2.urlopen(req) page
urllib2.HTTPerror:HTTP错误400:Bad请求
我从另一个网页(页面的头部是charset=“utf-8”)获取此页面的HREF。
只有当我试图打开url中包含“č”、“ž”或“ř”的页面时,才会返回错误
代码如下:
def getSoup(url):
req = urllib2.Request(url)
response = urllib2.urlopen(req)
page = response.read()
soup = BeautifulSoup(page, 'html.parser')
return soup
hovienko = getSoup("http://www.hovno.cz/hovna-az/a/1/")
lis = hovienko.find("div", class_="span12").find('ul').findAll('li')
for liTag in lis:
aTag = liTag.find('a')['href']
href = "http://www.hovno.cz"+aTag """ hrefs, I'm trying to open using urllib2 """
soup = getSoup(href.encode("iso-8859-2")) """ here occures errors when 'č','ž' or 'ř' in url """
有人知道我该怎么做才能避免错误吗
谢谢你这里的几件事
首先,URI不能包含非ASCII。你必须更换它们。见此:
第二,为自己省去一个痛苦的世界,使用HTTP工具。这个网站是UTF-8。为什么需要href.encode(“iso-8859-2”)?我已从中获取下一个代码
导入urllib2
进口cgitb
cgib.enable()
从BeautifulSoup导入BeautifulSoup
从URLPRASE导入URLPRASE
#打印所有链接
def打印链接(本地URL):
data=urllib2.urlopen(localurl.read())
打印“提取的HTML编码:%s”,类型(数据)
汤=美汤(数据)
parse=urlparse(localurl)
localurl=解析[0]+“:/”+解析[1]
打印“页面链接统计信息”
l=soup.findAll(“a”,attrs={“href”:True})
打印“链接总数=”+str(len(l))+“”
外部链接=[]#外部链接列表
对于l中的链接:
#如果是外部链接
如果链接['href'].find('http://')==0和链接['href'].find(localurl)=-1:
外部链接=外部链接+[链接]
打印“外部链接计数=”+str(len(externallinks))+“”
如果len(外部链接)>0:
打印“外部链接列表:”
对于外部链接中的链接:
如果link.text!='':
打印“”+链接.文本.编码('utf-8')
打印'=>['+'+']'+''
其他:
打印“+”[图像],
打印'=>['+'+']'+''
打印链接(“http://www.zlatestranky.cz/pro-mobily/")
解决方案非常简单。我应该使用urllib2.quote()
编辑代码:
for liTag in lis:
aTag = liTag.find('a')['href']
href = "http://www.hovno.cz"+urllib2.quote(aTag.encode("utf-8"))
soup = getSoup(href)
谢谢你,鲍比,我已经用urllib2.quote()解决了这个问题。您能告诉我使用请求如何帮助我编写代码吗?例如下面的代码。谢谢,请求库有一个更好的API。看看我在说什么。
for liTag in lis:
aTag = liTag.find('a')['href']
href = "http://www.hovno.cz"+urllib2.quote(aTag.encode("utf-8"))
soup = getSoup(href)