在利用python爬取数据时,遇到了以下两个问题,爬取到的url以及文档带有多余的转义字符反斜杠
具体情况如下:
网址:'http:\\/\\/slide.fashion.sina.com.cn\\/s\\/slide_24_84625_138650.html', 'https:\\/\\/fashion.sina.com.cn\\/s\\/fo\\/2020-11-13\\/1051\\/doc-iiznctke1091604.shtml'
文档内容:
'\\u674e\\u5b87\\u6625\\u767b\\u300a\\u65f6\\u5c1aCOSMO\\u300b\\u5341\\u4e8c\\u6708\\u520a\\u5c01\\u9762 \\u6f14\\u7ece\\u51ac\\u65e5\\u590d\\u53e4\\u98ce'
一开始以为是自己爬虫的方法写的不对,再仔细检查后,发现是json文件本身做的处理,只是我利用chrome插件显示时,他对其进行了处理,显示的格式符合我们正常观看需求(被插件的便利蒙蔽了双眼hhh)
在确定错误原因后,针对其进行字符串的处理和改进;
对于网址的处理
pat2 = r'"url":"(.*?)",'
links = re.findall(pat2, res)
for i in range(len(links)):
links[i]=links[i].replace('\\','')
print(links[i])
对于文档的处理:
(本身是utf-8编码,多了反斜杠,所以我们进行如下的处理)
pat1 = r'"title":"(.*?)",'
titles = re.findall(pat1, res)
#print(titles)
for i in range(len(titles)):
titles[i]=titles[i].replace('\\','\\')
titles[i]=titles[i].encode('utf-8').decode('unicode_escape')
print(titles[i])
处理详解:
python3默认支持utf-8,因此对于\uXXXX这种格式的中文,可以直接转换,但经常爬虫抓取回来的中文是\uXXXX格式,因此需要进行转换
s1='\u70ed\u95e8\u94ed\u6587\u63a8\u8350'
print('s1=',s1)
s2='\\u70ed\\u95e8\\u94ed\\u6587\\u63a8\\u8350'
print('s2=',s2)
s3=s2.encode('utf-8').decode('unicode_escape')
print('s3=',s3)
s1= 热门铭文推荐
s2= \u70ed\u95e8\u94ed\u6587\u63a8\u8350
s3= 热门铭文推荐