一、爬取要求
爬取诗词名句网上三国演义的章节名称,并获取每章的详细内容。
https://www.shicimingju.com/book/sanguoyanyi.html
二、完整代码
import requests
url = "https://www.shicimingju.com/book/sanguoyanyi.html"
headers = {'User-Agent': 'Mozilla/5.0 '} # 此处身份载体标识不完整
response = requests.get(url=url, headers=headers)
page_text = response.text
print(page_text) # 获取首页源代码
三、运行结果
源代码可以运行出来,但是里面所包含的汉字出现乱码现象。
四、解决方法
import requests
url = "https://www.shicimingju.com/book/sanguoyanyi.html"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'}
response = requests.get(url=url, headers=headers)
# 在发送请求完获取响应对象response对象后,需要对response对象设置编码格式
# 其中response.apparent_encoding为获取响应对象的编码格式
# response.encoding为设置对象的编码格式
response.encoding = response.apparent_encoding
page_text = response.text
print(page_text) # 获取首页源代码
部分运行结果如下:
为什么这样做就可以运行出来?在爬取的时候获取源代码是正常的(源代码正常,但是里面的汉字是乱码),但是在获取具体的文本内容出现乱码的现象,造成这种结果最可能的原因是编码方式不对,但是我通过查询我的python3的编码方式是utf-8,去查看网页源代码也是utf-8,按理说运行结果应该是正常的,但是最后获取的数据竟然出现乱码的现象。
经过大佬指点,虽然源代码指明编码格式是utf-8,但是他用了一些其他的编码格式来迷惑爬虫,在这个时候就需要先进行检测编码格式,然后再进行爬虫 的相关步骤。
或者就是通过上述代码,对获取的对象编码