代码

# 需要的库
import requests
from lxml import etree
from multiprocessing import Pool
import os
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
# 创建存储路径
pathname = './八零电子书/'
if not os.path.exists(pathname):
os.mkdir(pathname)
# 获取书籍列表
def get_booklist(url):
try:
response = requests.get(url=url,headers=headers)
etrees = etree.HTML(response.text)
sum = etrees.xpath('//a[@class="last"]/text()')[0]
booklist = etrees.xpath('//div[@class="book_bg"]/a/@href')
pool.map(get_book,booklist)
urls = ['http://www.quanshuwang.com/list/3_{}.html'.format(i) for i in range(2,int(sum)+1)]
pool.map(get_booklist,urls)
except Exception:
print('get_booklist failed')
# 获取具体书籍
def get_book(url):
try:
response = requests.get(url=url, headers=headers)
etrees = etree.HTML(response.text)
mulu = etrees.xpath('//a[@id="read_book"]/@href')[1]
get_mulu(mulu)
except Exception:
print('get_book failed')
# 获取书籍目录
def get_mulu(url):
try:
response = requests.get(url=url, headers=headers)
etrees = etree.HTML(response.text)
zhangjie = etrees.xpath('//div[@id="yulan"]/li/a/@href')
for i in zhangjie:
get_content(i)
except Exception:
print('get_mulu failed')
# 获取书籍内容
def get_content(url):
try:
response = requests.get(url=url, headers=headers)
etrees = etree.HTML(response.text.encode(response.encoding).decode(response.apparent_encoding))
book_name = etrees.xpath('//p[@class="text"]/a/text()')[1]
zhangjie = etrees.xpath('//div[@class="date"]/h1/text()')[0]
contents = etrees.xpath('//div[@id="content"]/text()')
print(zhangjie+'..正在下载')
f = open(pathname+book_name+'.txt','a+',encoding='utf-8')
f.write(zhangjie+'\n\n')
for con in contents:
f.write(con+'\n')
f.close()
except Exception:
print('get_content failed') # 程序入口
if __name__ == '__main__':
url = 'https://www.80txt.la/sort5/1.html'
# 创建进程池
pool = Pool()
# 启动函数
get_booklist(url)

控制台输出

E:\anaconda\python.exe E:/练习/最后阶段/0809/八零电子书.py
1第一章 捡到个小雌性..正在下载
01 遗嘱..正在下载
第一章 捡了东西不一定能换到钱..正在下载
2第二章 摔出了地球..正在下载
02 异变..正在下载
3第三章 这是个高科技世界..正在下载
第二章 爷爷!您是我的亲爷爷..正在下载
03 手镯..正在下载
第三章 不在新手村混的新手..正在下载
4第四章 所谓杌力..正在下载
第一章 我会打架..正在下载
04长生..正在下载

打开文件夹查看是否下载成功

done。

xpath+多进程爬取八零电子书百合之恋分类下所有小说。的更多相关文章

  1. xpath+多进程爬取全书网纯爱耽美类别的所有小说。

    # 需要的库 import requests from lxml import etree from multiprocessing import Pool import os # 请求头 heade ...

  2. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~

    上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...

  3. xpath+多进程爬取网易云音乐热歌榜。

    用到的工具,外链转换工具 网易云网站直接打开源代码里面并没有对应的歌曲信息,需要对url做处理, 查看网站源代码路径:发现把里面的#号去掉会显示所有内容, 右键打开的源代码路径:view-source ...

  4. 代理ip的使用以及多进程爬取

    一.代理皮的简单使用 简单的看一二例子即可 import requests #代理ip 高频的ip容易被封,所以使用ip代理 #免费代理 ip:www.goubanjia.com 快代理 西祠代理 h ...

  5. python+BeautifulSoup+多进程爬取糗事百科图片

    用到的库: import requests import os from bs4 import BeautifulSoup import time from multiprocessing impor ...

  6. requests+xpath+map爬取百度贴吧

    # requests+xpath+map爬取百度贴吧 # 目标内容:跟帖用户名,跟帖内容,跟帖时间 # 分解: # requests获取网页 # xpath提取内容 # map实现多线程爬虫 impo ...

  7. python爬取 “得到” App 电子书信息

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 静觅 崔庆才 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  8. python+正则+多进程爬取糗事百科图片

    话不多说,直接上代码: # 需要的库 import requests import re import os from multiprocessing import Pool # 请求头 header ...

  9. 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据

    1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...

随机推荐

  1. react-navigation安卓从右到左切换视图

    百度搜了3天都没一个正确的答案,最后还是google查到的:   "react-navigation": "^4.0.10", "react-navi ...

  2. python数据分析3之标签化

  3. 不同版本的ArcMap在Oracle中创建镶嵌数据集的不同行为

    如果不同版本的ArcMap连接到同一个Oracle数据库上,分别执行"创建镶嵌数据集",它们的行为是一样的吗? 答案是:不一样,会有细微的差别 在本例中,ArcMap的版本分别是1 ...

  4. Java开发笔记(一百四十六)JDBC的应用原理

    关系数据库使得海量信息的管理成为现实,但各家数据库提供的编程接口不尽相同,就连SQL语法也有所差异,像Oracle.MySQL.SQL Server都拥有自己的开发规则,倘若Java针对每个数据库单独 ...

  5. 长乐国庆集训Day5-2

    T1 彩虹 题目 [题目描述] Mr.Raju和他的一个大家庭外出度假,他们想要乘着彩虹欣赏周围的景色,但是这样最会有一些问题. 在他们家族中,如果一个人想要骑上彩虹,那么他喜欢的所有人和喜欢他的所有 ...

  6. Haffman编码

    Huffman树又称为最优树,是一种带权路径最短的树. 一.带权路径 在一棵树中我们把一个节点到另一个节点之间的通路叫做路径,在路径中每经过一个节点路径的长度就加一.如果对一个节点附上权值,则该节点的 ...

  7. Python实现斐波那契递归和尾递归计算

    ##斐波那契递归测试 def fibonacciRecursive(deepth): if deepth == 1: return 1 elif deepth == 2: return 1 else: ...

  8. Locust性能测试-环境准备与基本使用 转自:悠悠

    前言 提到性能测试,大部分小伙伴想到的就是LR和jmeter这种工具,小编一直不太喜欢写这种工具类的东西,我的原则是能用代码解决的问题,尽量不去用工具. python里面也有一个性能测试框架Locus ...

  9. C# Datatable、DataReader等转化json

    //对象转换为Json字符串 public static string ToJson(object jsonObject) { object objectValue = string.Empty; s ...

  10. java之spring mvc之文件上传

    目录结构如下: 注意,下面说的配置文件,一般都是值的src下的配置文件,即mvc.xml.如果是web.xml,则直接说 web.xml 1. 文件上传的注意点 表单必须是post提交,必须将 enc ...