【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

谢谢观看~

posted @ 2021-07-22 20:33  千山慕雪  阅读(154)  评论(1编辑  收藏  举报