我需要帮助将非 ascii url 编码/解码为适当的馈送urlopen()
方法形式。我从页面抓取 url(非 ascii url)并转到下一页的代码:
from urllib.request import urlopen
from bs4 import BeautifulSoup
从 chrome 浏览器复制粘贴的输入网址:
url = 'https://www.sheypoor.com/%DA%A9%D9%85%D8%AF %D9%86%D9%88%D8%AC%D9%88%D8%A7%D9%86-34926671.html'
for i in range(1,10):
html = urlopen(url)
page = BeautifulSoup(html.read(), 'html.parser')
url_obj = page.findAll('a')[13]['href'].strip()
print(url_obj)
url = url_obj
但我得到一个错误:
'ascii' codec can't encode characters in position 5-9: ordinal not in range(128)
当我检查“UnicodeEncodeError”时,我看到了这个通知:
----> 8 html = urlopen(url)
正如您所知道的过程:在第一个循环中, urlopen() 方法可以与“enterance url”一起使用,因为它采用以下形式:
https://www.sheypoor.com/%DA%A9%D9%85%D8%AF-%D9%86%D9%88%D8%AC%D9%88%D8%A7%D9%86-34926671.html
但是当url_obj
从 BeautifulSoup 对象中刮取的 形式为
https://www.sheypoor.com/سرویس-تخت-کمد-نوجوان-44887762.html
替换为较旧的 url,这种形式不适合提供给 urlopen() 方法:
我试图找到将我的 url_object 转换为正确的 url 形式(例如输入 url)的解决方案,但我失败了!:-(
我会很高兴您的支持和指导来解决这个问题。