Unicode提取
Unicode extraction
我写了一个从某个网页中提取 url 的代码,我面临的问题是它没有以相同的方式提取 url在网页上,我的意思是如果 URL 是某种法语语言,它不会按原样提取。我该如何解决这个问题?
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')
URL 是 percent-encoded。例如,在 HTML 中 URL 可能是
http://www.barneys.com/rick-owens-boucl%C3%A9-scarf-504025220.html
但在您的浏览器中 URL 可能 显示 为
http://www.barneys.com/rick-owens-bouclé-scarf-504025220.html
要解码百分比编码的 URL,请使用 Python2 中的 urllib.unquote
或 Python3 中的 urllib.parse.unquote
:
>>> 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
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')))
在Python3link.get
returns一个unicodestr
。
在Python2、link.get
returns一个str
字节,可以用utf-8
解码得到unicode:
print(unquote(link.get('href')).decode('utf-8'))
我写了一个从某个网页中提取 url 的代码,我面临的问题是它没有以相同的方式提取 url在网页上,我的意思是如果 URL 是某种法语语言,它不会按原样提取。我该如何解决这个问题?
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')
URL 是 percent-encoded。例如,在 HTML 中 URL 可能是
http://www.barneys.com/rick-owens-boucl%C3%A9-scarf-504025220.html
但在您的浏览器中 URL 可能 显示 为
http://www.barneys.com/rick-owens-bouclé-scarf-504025220.html
要解码百分比编码的 URL,请使用 Python2 中的 urllib.unquote
或 Python3 中的 urllib.parse.unquote
:
>>> 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
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')))
在Python3link.get
returns一个unicodestr
。
在Python2、link.get
returns一个str
字节,可以用utf-8
解码得到unicode:
print(unquote(link.get('href')).decode('utf-8'))