温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python中requests库爬取网站乱码的解决方法

发布时间:2021-10-19 10:36:22 来源:亿速云 阅读:151 作者:柒染 栏目:大数据

Python中requests库爬取网站乱码的解决方法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

【写在前面】

在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9),如下图所示:

Python中requests库爬取网站乱码的解决方法

网上 查找了一些方法,以为是遇到了网站加密处理。后来发现 通过F12还 是能获取网页的元素,那么有什么办法能规避乱码问题呢?答案是:用selenium.

【效果如下】

Python中requests库爬取网站乱码的解决方法

【示例代码】

# coding=utf-8# @Auther : "鹏哥贼优秀"# @Date : 2019/10/16# @Software : PyCharm
from selenium import webdriver
url = 'https://blog.csdn.net/yuzipeng'driver = webdriver.Chrome("F:\\Python成长之路\\chromedriver.exe")driver.get(url)urls = driver.find_elements_by_xpath('//div[@class="article-item-box csdn-tracking-statistics"]')blogurl = ['https://blog.csdn.net/yuzipeng/article/details/' + url.get_attribute('data-articleid') for url in urls]titles = driver.find_elements_by_xpath('//div[@class="article-item-box csdn-tracking-statistics"]/h5/a')blogtitle = [title.text for title in titles]myblog = {k:v for k,v in zip(blogtitle,blogurl)}for k,v in myblog.items():    print(k,v)driver.close()

【知识点】

1、selenium使用

基本的selenium安装方法、使用方法

(https://blog.csdn.net/yuzipeng/article/details/100179696)

2、推导式使用

(1)列表推导式:[表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件]

    类似这样就可以实现将for循环的多行程序浓缩到一句代码 中,如

blogtitle = [title.text for title in titles]

而如果用for循环写,则需要这样:

blogtitle = []for title in titles:    blogtitle.append(title)

(2)字典推导式:{ key表达式: value表达式 for value in collection if condition }

这样的写法,一般用于key和value能相互转换;但是如果key和value是完全不同的列表,那就需要用zip对key/value进行整合。

myblog = {k:v for k,v in zip(blogtitle,blogurl)}

如果对zip函数不熟悉,可以用下面的例子来 介绍下。

a = ['a', 'b', 'c']b = [1, 2, 3]c = {k: v for k, v in zip(a, b)}print(c) 结果是:{'a': 1, 'b': 2, 'c': 3}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI