Python自動化爬取小說,解放你的雙手
# -*- encoding='utf-8' -*-
import requests
import random
import time
import re
from bs4 import BeautifulSoup
import os
# 首頁域名
Host = "https://www.qqxsw.co/"
user_agent = [
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
header = {'User-Agent': random.choice(user_agent)}
re_link = re.compile(r'<a href="(.*?)"')
class Bug_pa(object):
def __init__(self, RootLink):
""" 初始化 """
self.rootLink = RootLink
def scarpylink(self):
""" 爬取書籍每個章節的 url """
try:
Link = self.rootLink[0]
data = []
res = requests.get(url=Link, headers=header)
res.encoding = 'gbk'
""" 解析內容 """
res = str(res.text)
soup = BeautifulSoup(res, 'lxml')
# 獲取書名
bookname = soup.select_one('#info > h1').text
# 獲取章節連結
ran = 1
for htmls in soup.select('#list > dl > dd > a'):
if ran > 12:
htmls = str(htmls)
links = re_link.findall(htmls)
data.append(Link + ''.join(links))
else:
ran += 1
if data:
print(' 章節連結獲取成功 ')
return {'bookname': bookname,
'links': data}
else:
return []
except Exception:
print(' 出錯 ')
return []
def scarpytext(self, url):
""" 爬取書籍每個章節的內容 """
try:
texts = []
page = requests.get(url=url, headers=header)
page.encoding = 'gbk'
soup = BeautifulSoup(page.text, 'lxml')
selctname = soup.select_one('.bookname > h1').text
print('外匯跟單gendan5.com 章節標題獲取成功 ')
for text_list in soup.select('#content'):
for tex in text_list: # 需要獲取詳細文字
tex = str(tex)
tex = tex.replace('<br/>', '').replace('\xa0\xa0\xa0\xa0', '')
texts.append(tex)
if texts:
print(' 章節文字獲取成功! ')
return {'name': selctname,
'text': texts}
except Exception:
print(' 文字函式出錯 ')
return []
def save(self, bookname, name, booktext):
""" 儲存小說 """
try:
# exists: 判斷括號中的檔案路徑是否存在
# 如果資料夾不存在 , 就以書名建立一個資料夾
print(bookname)
print(name)
if not os.path.exists(r'G:\book\-'+str(bookname)):
os.mkdir(r'G:\book\-'+str(bookname))
# with open(r'G:\book\book' + str(bookname) + str(name) + '.txt', 'a') as fp:
with open(r'G:\book\-' + str(bookname) + '\-' + str(name) + '.txt', 'a') as fp:
fp.write(name + '\n')
for txt in booktext:
fp.write(txt + '\n')
print(' 儲存成功 ')
except Exception:
print(' 儲存函式出錯了 ')
return []
def rand_time(self):
""" 啟動隨機延時 """
i = random.uniform(0, 30)
time.sleep(i)
def main(self):
""" 主函式 """
try:
# 爬取書的章節連結
linkinfo = self.scarpylink()
i = 1
for link in linkinfo['links']:
txt = self.scarpytext(link)
if txt:
if self.save(linkinfo['bookname'], str(i) + '-' + txt['name'], txt['text'] ):
print(' 儲存 ok', txt['name'])
else:
print(' 儲存失敗 ', txt['name'])
i += 1
except Exception:
print(' 主函式有問題 ')
def scrapyRootLink(url):
""" 獲取分類下的 url """
try:
links = []
res = requests.get(url=url, headers=header)
res.encoding = 'gbk'
date = BeautifulSoup(res.text, 'lxml')
for lin in date.select('.s2 > :link'):
lin = str(lin)
link = re_link.findall(lin)
if link:
links.append(link)
if links:
print(' 書籍連結獲取成功 ')
return links
else:
print('scrapyRootLink 有問題 ')
return []
except Exception as e:
print(e)
return []
if __name__ == '__main__':
rootlinks = []
for i in range(1, 2):
rlink = 'https://www.qqxsw.co/top/allvisit/%s.html' %(i)
rootlinks.append(rlink)
for rootlink in rootlinks:
for alink in scrapyRootLink(rootlink):
shu = Bug_pa(alink)
shu.main()
shu.rand_time() # 每爬取一頁執行緒隨機睡眠 0-30 秒
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2766414/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解放雙手 hosts 自動化 (Vagrant-hostsupdater)
- App 端自動化的最佳方案,完全解放雙手!APP
- “自動化測試解放雙手”,測試自動化好處大盤點!
- MyBatis Generator 程式碼自動生成器,從此解放你的雙手MyBatis
- 解放雙手 - Android 開發應該嘗試的 UI 自動化測試AndroidUI
- 解放雙手,讓流程自動化軟體助你一臂之力
- 解放雙手 | Jenkins + gitlab + maven 自動打包部署專案JenkinsGitlabMaven
- 解放雙手——移動端UI自動化測試框架對比,總有一款適合你!UI框架
- Python 第一個爬蟲,爬取 147 小說Python爬蟲
- 解放雙手,基於github travis-ci docker自動化部署java專案GithubDockerJava
- 解放雙手——你知道軟體測試階段都有哪些主流自動化測試技術嗎?
- 用PYTHON爬蟲簡單爬取網路小說Python爬蟲
- 10行Python程式碼自動清理電腦內重複檔案,解放雙手!Python
- 給你一個全自動的螢幕適配方案(基於SW方案)!—— 解放你和UI的雙手UI
- LR.Net解放程式設計師雙手的自動生成程式碼程式設計師
- python 對城市距離自動化爬取-小型專案Python
- 筆趣閣小說爬取
- python3 使用 Selenium 自動化測試或爬取資料Python
- 分享一下我的三個程式碼自動生成工具類--助你解放雙手
- 分享一下我的三個程式碼自動生成工具類–助你解放雙手
- 多程序最佳化頂點小說爬蟲:加速爬取速度的深度最佳化策略爬蟲
- Python爬蟲之小說資訊爬取與資料視覺化分析Python爬蟲視覺化
- python爬取365好書中小說Python
- 操作VR介面僅需眼神,Eyefluence眼控技術解放你的雙手VR
- 無需VR外設,普林斯頓學霸用DeepHand解放你的雙手VR
- DBeaver如何設定自動重新整理資料庫表的資料,徹底解放雙手!資料庫
- 解放雙手,自動生成“x.set(y.get)”,搞定vo2dto轉換
- JavaScript爬蟲程式實現自動化爬取tiktok資料教程JavaScript爬蟲
- 舉例說明你對前端自動化的理解前端
- 《從零開始學習Python爬蟲:頂點小說全網爬取實戰》Python爬蟲
- 解放程式設計師雙手之Supervisor程式設計師
- 如何用python爬蟲下載小說?Python爬蟲
- Python《爬取手機和桌面桌布》Python
- Python 從零開始爬蟲(六)——動態爬取解決方案 之 手動分析Python爬蟲
- python爬蟲之抓取小說(逆天邪神)Python爬蟲
- 小說網站原始碼:自適手機版小說站原始碼整合全自動採集規則網站原始碼
- 【python介面自動化】- openpyxl讀取excel資料PythonExcel
- 自動化代替重複勞動、解放銷售的神器-Zoho CRM系統