xpath+多进程爬取全书网纯爱耽美类别的所有小说。
程序员文章站
2022-06-08 09:22:36
控制台输出 打开文件夹查看是否下载成功 done。 ......
# 需要的库 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('//ul[@class="seewell cf"]/li') book_list = [] for books in booklist: book = books.xpath('./a/@href')[0] book_list.append(book) pool.map(get_book,book_list) 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.content.decode("gb18030")) book_name = etrees.xpath('//div[@class="b-info"]/h1/text()')[0] if os.path.exists(pathname+book_name+'.txt'): print(book_name+'.书籍已存在,如需重新下载请删除原文件') return none book = etrees.xpath('//div[@class="b-oper"]/a/@href')[0] get_mulu(book) except exception: print('get_book failed') # 获取书籍目录 def get_mulu(url): try: response = requests.get(url=url, headers=headers) etrees = etree.html(response.text) book = etrees.xpath('//div[@class="clearfix dirconone"]/li') for i in book: book = i.xpath('./a/@href')[0] get_content(book) except exception: print('get_mulu failed') # 获取并写入书籍内容 def get_content(url): try: response = requests.get(url=url, headers=headers) etrees = etree.html(response.content.decode("gb18030")) title = etrees.xpath('//a[@class="article_title"]/text()')[0] zhangjie = etrees.xpath('//strong[@class="l jieqi_title"]/text()')[0] contents = etrees.xpath('//div[@class="maincontenr"]/text()') content = ''.join(contents) with open(pathname+title+'.txt','a+',encoding='utf-8') as f: f.write(zhangjie+'\n\n'+content+'\n\n') print('正在下载:',zhangjie) except exception: print('get_content failed') # 程序入口 if __name__ == '__main__': url = 'http://www.quanshuwang.com/list/3_1.html' # 创建进程池 pool = pool() # 启动程序 get_booklist(url)
控制台输出
正在下载: 章 节目录 第三十四章 不眠的天堂 正在下载: 章 节目录 第四十四章 :耳光 正在下载: 章 节目录 第046章 找到变异元晶 正在下载: 章节目录 第二十八章 修路优惠 正在下载: 章 节目录 第四十五章 :憋屈 正在下载: 章 节目录 第047章 至宝得手 正在下载: 章节目录 第二十九章 猜鱼 正在下载: 章 节目录 第048章 凤凰涅槃,浴火重生。 正在下载: 章节目录 第三十章 养猪场 正在下载: 章 节目录 第四十六章 :酣畅淋漓 正在下载: 章 节目录 第049章 上等天赋资质 正在下载: 章节目录 第三十一章 上鬼身 正在下载: 章 节目录 第050章 元力神兵 正在下载: 章 节目录 第四十七章 :舵主之位 正在下载: 章 节目录 第三十五章 黑暗 正在下载: 章节目录 第三十二章 吓死马有钱 正在下载: 章 节目录 第三十六章 商议 正在下载: 章 节目录 第051章 天级上品龙隐术 正在下载: 章 节目录 第三十七章 寻觅 正在下载: 章节目录 第三十三章 再遇李三 正在下载: 章节目录 第三十四章 借了一百万
打开文件夹查看是否下载成功
done。
上一篇: 这两位都是降蜀之将,为什么待遇截然不同?
下一篇: 数据类型 _python