首页 技术 正文
技术 2022年11月14日
0 收藏 465 点赞 5,097 浏览 1714 个字

一、背景:近期学习python爬虫中看到,在对网页内容进行解析的技术中,re正则表达式工具也是一个很好的工具,使用re编制爬虫工具正好熟悉re正则表达式的使用。

二、环境及爬取目标

1、linux centos7系统2、小说网站:http://www.xbiquge.la/15/15158 ,小说名称《汉乡》。三、爬取思路1、爬取目录页面,获得章节链接和标题List列表文件2、根据章节链接和标题List列表文件内容,逐一爬取小说各章节,并写入预设文件名。四、代码实现(代码文件名:test7.py)#-*- coding:utf-8 -*-
import requests
import re
#通过目录页面获取小说各章节链接和标题列表
url=”http://www.xbiquge.la/15/15158/”
html=requests.get(url).content.decode(“utf-8”)      #获取目录页面内容
#print(html)
catalog=re.findall(‘<dd><a href=\'(/15/15158/\d+.html)\’ >(.+?)</a></dd>’, html, re.S)    #返回章节链接和标题List列表文件,其中?表示使用非贪婪模式。
#print(catalog[0], catalog[len(catalog)-1])    #测试显示起始和结束章节的链接和标题 #获取小说各章节内容并输出为预设文件
novelname=”汉乡_test7.txt”
count_begin=0
#count_end=2  #调试用
count_end=len(catalog)
with open(novelname, mode=”a”, encoding=”utf-8″) as f:
        for i in range(count_begin,count_end):
            #print(catalog[i][0])
            url_c=”http://www.xbiquge.la” + catalog[i][0]           #获得小说各章节的链接
            title=catalog[i][1] 
            print(“正在下载———-“, title)
            html_c=requests.get(url_c).content.decode(“utf-8”)       #获得章节页面
            #print(html_c)
            text_l=re.findall(‘<div id=”content”>(.*?)</div>’, html_c, re.S)    #获得章节内容
            text1=text_l[0].replace(‘&nbsp;&nbsp;&nbsp;&nbsp;’, ”).replace(‘<br />’, ‘\n’).replace(‘\15’, ”)  #消除多余字符,其中\15是^M字符的八进制值
            text=re.sub(r'<p>.*?</p>’, ”, text1, 0, re.S)   #消除每个章节的广告段落,re.sub方法有五个参数:正则表达式规则、替代字符串、被替代的字符串、count、flag,count为0表示全部替换,flag设为re.S表示.代表的字符包含换行符\n。
            #print(text)
            f.write(title)
            f.write(‘\n\n’)
            f.write(text)
            f.write(‘\n\n’)
f.close() 五、运行:(base) [python@ELK ~]$ python test7.py
正在下载———- 第一章 预言
正在下载———- 第二章 被烧焦了
正在下载———- 第三章 虎外婆
正在下载———- 第四章 始皇帝的太宰
正在下载———- 第五章大人为上,礼为尊……

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,412
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,185
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905