爬虫练习-爬取《斗破苍穹》全文小说
生活随笔
收集整理的這篇文章主要介紹了
爬虫练习-爬取《斗破苍穹》全文小说
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言:
爬取《斗破蒼穹》全文小說
目標:
本文為整理代碼,梳理思路,驗證代碼有效性——2019.12.8
環境:
Python3(Anaconda3)
PyCharm
Chrome瀏覽器
主要模塊:
re
requests
time
1.
分析欲要爬取網頁的網址及其結構,打開Chrome開發者工具,如下圖我們分析得出http://www.doupoxs.com/doupocangqiong/1.html這里的數字1即為小說章節數,那么我們可以通過fomat的方式對小說章節鏈接進行遍歷
通過最后一個li標簽或者網頁最后的章節可知,這里有1646章,那么我們的表達式為urls = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(1, 1647)]
2.
用正則表達式匹配獲取小說內容
分析第一章的網頁結構可以知道小說內容均在標簽<p>內,即我們的正則表達式為contents = re.findall('<p>(.*?)</p>', html, re.S)
3.
將小說內容保存到一文本文件中
保存過程比較簡單,“將大象裝進冰箱”三步
A.數據截圖
B.完整代碼
#!/usr/bin/env python # -*- coding: utf-8 -*-# 導入相應的庫文件 import requests import re import time# 加入請求頭 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ''AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}# 定義獲取信息的函數 def get_info(url):res = requests.get(url, headers=headers)html = res.content.decode('utf-8')print(url, res.status_code)if res.status_code == 200: # 判斷請求碼是否為200contents = re.findall('<p>(.*?)</p>', html, re.S)for content in contents:new_con = str(content).replace('</p>', '').replace('<p>', '')f.write(new_con+'\n') # 正則獲取數據寫入TXT文件中f.write("---------------------------------\n" # 分割線"---------------------------------\n""---------------------------------\n")# 程序主入口 if __name__ == '__main__':# 構造多頁URLurls = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(1, 1647)]# 新建TXT文檔,追加的方式f = open('doupo.txt', 'a+')for url in urls:get_info(url) # 循環調用get_info()函數time.sleep(1) # 睡眠1秒f.close() # 關閉TXT文件總結
以上是生活随笔為你收集整理的爬虫练习-爬取《斗破苍穹》全文小说的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 活着
- 下一篇: 软件工程(三)——结构化需求分析 (重点