【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

謝謝觀看~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章