【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法
2023-09-14 09:05:59 时间
【写在前面】
在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9),如下图所示:
网上 查找了一些方法,以为是遇到了网站加密处理。后来发现 通过F12还 是能获取网页的元素,那么有什么办法能规避乱码问题呢?答案是:用selenium.
【效果如下】
【示例代码】
# 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"]/h4/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安装方法、使用方法(如查找元素的各类函数)可以详见之前的博客《【Python成长之路】从零学爬虫--给微信公众号阅读量作个弊:刷阅读量》
(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}
作者:鹏哥贼优秀
相关文章
- python中pygame怎么安_Python中pygame安装方法图文详解
- 用Python计算笛卡尔积
- python setattr函数_Python内置函数(53)——setattr
- 【说站】python try-except捕获异常的方法
- 【说站】Python中os模块的功能介绍
- python读取图像的几种方法_python图像识别教程
- python chmod_Python os.chmod用法及代码示例
- python win32api sendmessage_Python win32api.SendMessage方法代码示例[通俗易懂]
- python画地形地貌图_opencv检测瑕疵python
- Python_字符串常用函数和方法(1)_Python自学第十三节
- Ubuntu18.04 一键升级Python所有第三方包 及安装python包的方法
- python利用PIL库读取图片的EXIF信息详解编程语言
- python面试十题详解编程语言
- python_day24_面向对象进阶1_内置方法详解编程语言
- 使用Python执行Linux命令的方法(python调用linux命令)
- MySQL与Python搭配,实现数据库操作。(mysql-python)
- Python静态方法和类方法的区别和应用(无师自通)
- 在Linux上学习Python——你的编程之路(linux学python)
- Linux查看Python安装路径的方法(linux查看python安装路径)
- 如何在Linux中安装Python?(linux安装python)
- python实现AutoResetEvent类的阻塞模式方法解析
- 2款Python内存检测工具介绍和使用方法
- python使用pyhook监控键盘并实现切换歌曲的功能
- Python发送Email方法实例
- 寻找网站后台地址的python脚本
- python实现udp数据报传输的方法