zoukankan      html  css  js  c++  java
  • 【Python学习】获取《三国演义》目录

    因为是初学python,所以遇到了一些问题,但好在一一解决,特此记录一边温故知新。

    问题如下:

    • 数据解析方式:可选择的方式有很多,对于选择困难的人员来说是一件比较头疼的事情。层层对比之下最终选择了xpath(仁者见仁,不强求),因为xpath解析是我们在爬虫中最常用也是最通用的一种数据解析方式,由于其高效且简介的解析方式受到了广大程序员的喜爱。
    • 中文乱码处理:获取到的结果是乱码,很头疼,百度了很多方法,不怎么管用,最终请教了老司机,老司机会用不会讲,惆怅! 留着以后攻坚吧~
    • 字符串中间多个空格问题:获取到的标题中间的空格数量不等,2、3、4个都有,这个不统一我是受不了,但是看了一下python关于字符串的文档,没有找到解决办法。最终还是度娘给了答案:正则。
    import requests
    import re
    from lxml import etree
    headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }
    data = []
    url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
    page_text = requests.get(url=url,headers=headers).text
    
    tree = etree.HTML(page_text)
    li_list = tree.xpath('//div[@class="book-mulu"]/ul/li')
    for li in li_list:
        title=li.xpath('.//a/text()')[0].encode('ISO-8859-1').decode('utf-8')# 中文乱码处理
        title_url = li.xpath('.//a/@href')[0].encode('ISO-8859-1').decode('utf-8')
        dic = {
            "title": re.sub('s+', ' ',title),# 将有多个空格的地方替换为只有一个空格
            "title_url": 'https://www.shicimingju.com/'+title_url
        }
        data.append(dic)
    print(data)
    
    

    最终数据:

    image-20210722202951467

    谢谢观看~

  • 相关阅读:
    明确目标
    适应环境
    解决问题的方式
    超市收银系统设计
    功能开发流程
    JS代码和OC代码的相互调用
    app上架流程的整理
    手动创建单例
    Python 安装mysqldb
    Python UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
  • 原文地址:https://www.cnblogs.com/kudsu/p/15046144.html
Copyright © 2011-2022 走看看