編寫爬取全站小說py指令碼成功!記錄下
阿新 • • 發佈:2020-09-19
備註:此指令碼爬取小說速度過慢,幾分鐘爬取一本,
1 接下來會用scrapy爬蟲框架重構指令碼,
2 並且實現mysql或者mongoDB資料庫存入資料,
3 建立小說站點將小說展示出來
4 爬取.yuetut小說網站小說py指令碼
# -*- coding:utf-8 -*- import requests from pyquery import PyQuery # 原生的css選擇器 import user_agent import time yizhangjie_url = 'http://www.yuetut.com/cbook_2675/3.html' headers = { 'User-Agent' :user_agent.generate_user_agent() } # 章節的url name 書名 def crawl_one_chapter(yizhangjie_url=None, name=None): """ :param yizhangjie_url:章節url :param name: 書名 :return: None """ # proxy = { # "http":"http://" + requests.get("http://123.207.35.36:5010/get/").text # } response = requests.get(url=yizhangjie_url, headers=headers) #,proxys=proxy doc = PyQuery(response.text) content = doc("#content").text() title = doc("#wrapper > div.content_read > div > div.bookname > h1").text() # print(title) with open(file=name+".txt", mode='a+', encoding='utf-8') as f: f.write(title + '\n\n' + content + '\n\n') # crawl_one_chapter( name='凡人修仙傳-仙界', yizhangjie_url=yizhangjie_url) # 獲取一本書的所有章節的url 獲取bookname # 需要一本書的目錄頁面 # def get_index(index_url='http://www.yuetut.com/cbook_2675/'): def get_index(index_url=None): # 目錄 text = requests.get(url=index_url).text doc = PyQuery(text) links = doc('div#list a') # print(links) name = doc('h1').text() # 基於使用者體驗而設計的提示 print('==================正在爬樹:{}===================='.format(name)) for link in list(links.items())[8:]: yizhangjie_url = 'http://www.yuetut.com' +link.attr.href crawl_one_chapter(yizhangjie_url=yizhangjie_url, name=name) def get_all_book_url(): all_book_url = 'http://www.yuetut.com/cbook_all.html' response = requests.get(url=all_book_url) doc = PyQuery(response.text) # 獲取很多本書的連結 links = doc('div.novellist a') # print(links) for link in links.items(): index_url = 'http://www.yuetut.com'+link.attr.href # print(index_url) get_index(index_url=index_url) get_all_book_url() """ 伺服器是反爬 我們爬蟲是反反爬 UA 告訴伺服器我是從瀏覽器來的,我是正常的 不會被封 ip池 非常多的ip 不斷的換ip cookie池 登入 cookie驗證 不斷的換cookie selenium ajax解析 cookie池 單機爬蟲速度慢 多執行緒爬蟲,多程序爬蟲, 分散式爬蟲 scrapy 各種中介軟體 pipeline 資料持久化,寫入資料 scrapyd 分散式爬蟲 --工作之後-領悟 負載均衡-不僅是爬蟲 一臺電腦 執行爬蟲 一臺電腦的負載是有限的 很多臺電腦 負載均衡到每一臺電腦 加電腦 """