IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 记一次使用python 爬虫爬取小说 -> 正文阅读

[开发工具]记一次使用python 爬虫爬取小说

作者:recommend-item-box type_blog clearfix
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
from concurrent import futures
from multiprocessing import Process
#from concurrent.futures import ProcessPoolExcutor
#from time import time
import time
import re
import random
from collections import deque
from queue import Queue
def chapterUrl_list():
        soup = BeautifulSoup(open('ss.html',encoding='utf-8'),features='html.parser')
        chapterurllist = Queue()
        chapterurls = soup.find('div',attrs={"class":"listmain"}).find_all('a')
        for url in chapterurls:
                if url.get('href') is    None : continue
                if url.get('href').find('9832') < 0 : continue 
                chapterurllist.put(url.get('href'))
        return chapterurllist

def write2txt(result):
	r = result 
	r = r.result()
	r.encoding = r.apparent_encoding
	soup = BeautifulSoup(r.text,"lxml")
	title =    soup.find('h1').get_text()
	contents = soup.find_all(name='div',attrs={'class':'showtxt'})
	for txt in    contents:
	        print('title-----------------------------'+ title)
	        a = '\n'+title+'\n'+ txt.text
	        f = open(r'打更人.txt','a',encoding='utf-8')
	        f.write(a)
	        f.close()

header = [
        'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36'
        ,'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
        ,'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'
        ,'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'
        ,'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)'
        ]
headers={'User-Agent':str(header[random.randint(0,4)])}    
session = requests.Session()
session.headers.update(headers)

#1. 获取所有章节的url链接
url_ls = chapterUrl_list()
print('--------------------------------------------------------------------------------------')
print(url_ls.qsize())
print('--------------------------------------------------------------------------------------')

text_ls = Queue()
executor = futures.ThreadPoolExecutor(max_workers=3)
ex = futures.ThreadPoolExecutor(max_workers=1)


#2.遍历url队列, 获取每章的内容
while not url_ls.empty()    :

        ft = executor.submit(session.get,url_ls.get())
        time.sleep(1)
        text_ls.put(ft)
        if not text_ls.empty(): 
        	ex.submit(write2txt,text_ls.get())

ps: 第一次写python 脚本, 嘿嘿嘿嘿, 乱写的.
参考了好多前辈的代码.终于不知道怎么地 他就能运行了.
用了多线程, 然而又好像没有多线程效果.
爬1000章用了接近15分钟…
头蒙, 有机会再添砖加瓦 改进吧.

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:09:39  更:2021-11-24 08:10:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:41:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码