requrets、re实现简单爬虫
开发环境:python 3.8.0+requests+pygame+ReNamer Pro
简介:爬取网络电子书籍,按章节名称写入每一章的内容(且按章节名排序),存于电子书名文件夹下。
效果:
代码如下:
import requests import re import os # 1.获取电子书目录页HTML代码 headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36‘} response = requests.get(‘http://www.xqishuta.com/du/36/36878/‘, headers=headers) html = response.content.decode(‘utf-8‘) # print(html) # 2.re获取每一章节的URL urls = re.findall(‘<a href="(.*?)">.*? .*?</a>‘, html) urls1 = urls[20:-1] # 3.re获取每一章节的名称 urss = re.findall(‘<a href=".*?">(.*? .*?)</a>‘, html) urss1 = urss[20:-1] print(urss1[0]) # 按书籍名创建文件夹 dir_name = [‘圣墟‘][0] if not os.path.exists(dir_name): os.mkdir(dir_name) # 4.循环获取每一章节HTML代码 i = 0 while i < len(urss1): # response1 = requests.get(("http://www.xqishuta.com/du/36/36878/" + urls1[i])) # # print("http://www.xqishuta.com/du/36/36878/" + urls1[i]) # print(response1) response = requests.get(str("http://www.xqishuta.com/du/36/36878/" + str(urls1[i])), headers=headers).content.decode(‘utf-8‘) # re获取每一章节的内容 content = re.findall(‘.*?.*?<p class=".*?">‘, response) # 内容清洗 text = re.sub("[A-Za-z0-9\!\%\[\]\,\:<\/\\\< >\=""‘\"\"]", "", str(content)).encode(‘utf-8‘) # 5.按章节名称写入每一章的内容 with open(dir_name + ‘/‘ + urss1[i] + ‘.txt‘, ‘wb‘) as f: f.write(text)40 # 打印已经完成的章节的URL print(urls1[i]) i += 1
最后:由于这本电子书籍章节名称前一千多章章节排序名称为中文,后面为数字,造成文件夹中排序上错乱。效果是这样的,强迫症表示看着非常难受
于是网上找来一软件为ReNamer Pro将中文排序改为了数字排序,用的是里面的名称替换。
思路很简单,全部拖入后一换1....十、百、千替换成空,然后特殊的(比如第十章,第一百章,第一千章等)取消选中,重命名后特殊名称的分批替换。都重命名后排序效果如最上图,看着非常舒适。
链接: https://pan.baidu.com/s/1tRr2f7XUJ5oCLX2zUS-UQA 提取码: qpif
相关推荐
ZHANGRENXIANG00 2020-06-28
kikaylee 2020-05-05
夜斗不是神 2020-11-17
染血白衣 2020-11-16
ARCXIANG 2020-11-02
ARCXIANG 2020-10-28
CycloneKid 2020-10-27
荒谬小孩 2020-10-26
逍遥友 2020-10-26
snakeson 2020-10-09
meylovezn 2020-08-28
囧芝麻 2020-08-17
数据挖掘工人 2020-08-15
cxcxrs 2020-07-28
dashoumeixi 2020-07-20
sunzhihaofuture 2020-07-19
我欲疾风前行 2020-07-06