首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode提取

Unicode提取
EN

Stack Overflow用户
提问于 2015-07-09 19:19:57
回答 1查看 75关注 0票数 1

我写了一个从某个网页提取网址的代码,我面临的问题是它没有像在网页上那样提取URL,我的意思是如果URL是用某种法语来提取的,它就不会按原来的方式提取它。我该如何解决这个问题?

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
for i in range(0,500):
    o=36*i
    r=requests.get('http://www.barneys.com/barneys-new-york/men?start='+str(o)+'&format=page-element&sz=36')
    soup=BeautifulSoup(r.text)
    links=soup.find_all("a",{"class":"thumb-link"})
    for link in links:
        print link.get('href')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 19:33:56

URL为百分比编码。例如,在HTML中,URL可能是

代码语言:javascript
复制
http://www.barneys.com/rick-owens-boucl%C3%A9-scarf-504025220.html

但是在您的浏览器中,URL可能会显示为

代码语言:javascript
复制
http://www.barneys.com/rick-owens-bouclé-scarf-504025220.html

要解码百分比编码的URL,请在Python2中使用Python2,在Python3中使用urllib.parse.unquote

代码语言:javascript
复制
>>> print(urllib.unquote('http://www.barneys.com/rick-owens-boucl%C3%A9-scarf-504025220.html'))
http://www.barneys.com/rick-owens-bouclé-scarf-504025220.html
代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
try:
    # Python2
    from urllib import unquote
except ImportError:
    # Python3
    from urllib.parse import unquote

for i in range(0,500):
    o=36*i
    r=requests.get('http://www.barneys.com/barneys-new-york/men?start='+str(o)+'&format=page-element&sz=36')
    soup=BeautifulSoup(r.text)
    links=soup.find_all("a",{"class":"thumb-link"})
    for link in links:
        print(unquote(link.get('href')))

在Python3中,link.get返回一个unicode str。在Python2中,link.get返回字节的str,可以用utf-8对其进行解码以获得unicode:

代码语言:javascript
复制
print(unquote(link.get('href')).decode('utf-8'))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31326420

复制
相关文章

相似问题

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