陌染___007 2021-03-08 16:06 采纳率: 25%
浏览 90

python爬取文档乱码

# —*- codeing = utf-8 -*-
# @Time : 2021/3/8 6:49
# @File :05. bs4实例——三国演义.py
# @Software : PyCharm
import requests
from bs4 import BeautifulSoup

if __name__ == '__main__':
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0'
    }

    url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
    page_text = requests.get (url=url, headers=headers).text
    
    # 在首页中解析出章节的标题和详情页的uil
    # 1 示例化BeatifulSoup对象,需要将源码数据加载到该对象中
    soup = BeautifulSoup (page_text, 'lxml')
    # 解析获取章节标题和详情页的url
    li_lest = soup.select ('.book-mulu > ul > li')
    fp = open ('./三国演义.txt', 'w', encoding='utf-8')
    for li in li_lest :
        title = li.a.string
        detail_url = 'https://www.shicimingju.com/' + li.a['href']
        # 对详情页发起请求,解析章节内容
        detail_page_text = requests.get (url=detail_url, headers=headers).text
        #
        delattr_soup = BeautifulSoup (detail_page_text, 'lxml')
        div_tag = delattr_soup.find ('div', class_='chapter_content')
        #
        content = div_tag.text
        #
        fp.write (title + ':' + content + '/n')
        print (title, '爬取成功')

到底哪里出现问题了

 

  • 写回答

3条回答 默认 最新

  • coagenth 2021-03-08 17:58
    关注

    对于中文编码的文本提取,在获得response对象后,注意不是字符串,你需要将.text移动到soup语句,加上r.encoding=r.apparent_encoding,才不会出现乱码。

    page_text = requests.get(url=url, headers=headers)

        page_text.encoding=page_text.apparent_encoding

        # 在首页中解析出章节的标题和详情页的uil

        # 1 示例化BeatifulSoup对象,需要将源码数据加载到该对象中

        soup = BeautifulSoup(page_text.text, 'lxml')

    后面也作出如此更改,就行了

    评论

报告相同问题?

悬赏问题

  • ¥15 mySQL5.7.34安装遇到的问题
  • ¥15 结构功能耦合指标计算
  • ¥20 visual studio中c语言用ODBC链接SQL SERVER
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊