还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波
生活随笔
收集整理的這篇文章主要介紹了
还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
爬取小說數據
- 效果
- 網頁分析
- 網頁網址分析
- 書內容位置分析
- 不同書內容位置分析
- 將內容存到Excel
- 完整代碼
效果
網頁分析
網頁網址分析
對比我們可以發現,不同的網頁只有后邊的數字不一樣。
得到前10頁的網址:
書內容位置分析
對比我們可以得到頁面上不同的小說,都是在同一個<ul>的<li>里邊。
得ul到的XPath后//*[@id="book-img-text"]/ul 在后邊選擇li 即可
不同書內容位置分析
第一本書的標題的Xpath://*[@id="book-img-text"]/ul/li[1]/div[2]/h4/a
第二本書的標題的Xpath://*[@id="book-img-text"]/ul/li[2]/div[2]/h4/a
我們發現只有 ==li[ ]==中的小標不一樣,于是有:
title = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/h4/a/text()')[0]通過i的變化來達到切換的目的。
將內容存到Excel
需要使用第三方庫:
pip install wlwt使用步驟:
完整代碼
import requests from lxml import etree import xlwt import timeheaders = { 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36', 'Host' : 'www.qidian.com', 'Cookie':'_ga_PFYW0QLV3P=GS1.1.1629617197.2.1.1629617333.0' }#//*[@id="book-img-text"]/ul/li[2]/div[2]/h4/a def getOnePage(url):html = requests.get(url, headers=headers, allow_redirects=False)selector = etree.HTML(html.text)#選擇 <ul>節點中的所有《li>節點infos = selector.xpath('//*[@id="book-img-text"]/ul/li')print(infos)result = []i = 1pre = '//*[@id="book-img-text"]/ul/li['for info in infos:# 注意的地方一 后邊加[0]才能的字符串style_1 = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/a[2]/text()')[0]style_2 = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/a[3]/text()')[0]# 提取標題title = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/h4/a/text()')[0]# 提取作者author = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/a[1]/text()')[0]# 風格style = style_1 +'.'+style_2# 完成度complete = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/span/text()')[0]#簡介introduce = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[2]/text()')[0]# 創建一個字典對象存入data = { 'title':title,'author':author,'style':style,'complete':complete,'introduce':introduce}result.append(data)# 換到下一本書i+=1print(result)return result# header = ['標題','作者','類型','完成度','介紹']book = xlwt.Workbook(encoding='utf-8')sheet = book.add_sheet('novels')for h in range(len(header)):sheet.write(0,h,header[h])#getOnePage('https://www.qidian.com/all/') # 注意的地方二 /不能少 urls = ['https://www.qidian.com/all/page{}/'.format(str (i)) for i in range(1,11)] i=1 #urls = ['https://www.qidian.com/all/'] for url in urls:novels = getOnePage(url)print(novels)for novel in novels:print(novel)time.sleep(0.1)sheet.write(i,0,novel['title'])sheet.write(i, 1, novel['author'])sheet.write(i, 2, novel['style'])sheet.write(i, 3, novel['complete'])sheet.write(i, 4, novel['introduce'])i+=1 book.save('novels.xls')
總結
以上是生活随笔為你收集整理的还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lxml 和 XPah (爬虫)
- 下一篇: 字符串相加/大数相加(代码极短)