python:最简单爬虫之爬取小说网Hello wrold

liftword1个月前 (03-24)技术文章7

以下用最简单的示例来演示爬取某小说网的类目名称。


新建一个retest.py,全文代码如下,读者可以复制后直接运行。代码中我尽量添加了一些注释便于理解。


需要说明的一点,该小说网站如果后续更新改版了,文中截取字符的正则表达式可能需要根据做一些变动,才能成功爬取到我们想要的名称。


一、小说网站首页


我们想爬取的是首页-》全部分类 菜单下的小说分类名称



二、retest.py代码


# -*- coding: UTF-8 -*-
import re
import urllib.request
import codecs
import time

# 使用re 与 urllib 包简单爬取小说种类名称
class Retest(object):
    def __init__(self):
        self.getText()

    # 爬取方法
    def getText(self):
        print("准备开始爬取")
        # 请求网站首页,获取页面返回内容
        url = "https://www.readnovel.com"
        response = urllib.request.urlopen(url, timeout=5)
        result = response.read().decode('utf-8') #使用utf-8 避免中文乱码
        print(result)   #网页内容
        # 网页中的原字符串
        # '
现代言情
' # 通过正则表达式与固定字符组合,过滤后得到新字符串 pr = '
.*?;.*?
' print("过滤后的文本:=====") pattern = re.compile(pr) #将正则表达式编译为正则对象 movieList = pattern.findall(result) #通过正则表达式从源字符串中截取,得到一个movieList数组 print(movieList) # 使用map函数,将movieList数组中各元素,通过lambda匿名函数内的方法,过滤掉其他标签字符,仅保留我们需要的类目中文标题如“现代言情” moveTitleList = map(lambda x: x.split("")[1].split("")[0], movieList) # 最后,依次打印出各类目名称 for movie in moveTitleList: print("%s\r\n" % movie) if __name__ == '__main__': Retest()


三、运行后结果



四、分析说明


下面结合上述代码再做一些补充说明,便于我们初学者更易于理解。


1.查找关键字,正则表达式获取字符串


我们在网站首页,查看前端页面源代码,并查找到关键字



红线标注的就是我们需要通过正则表达式从全文中定位并截取的字符串。


现代言情
古代言情


对应的正则表达式如下:


.*?;.*?


我们只需要将固定不变的关键字符串与可变的组合在一起即可。


“30020”、“”、“现代言情”这三个是动态的,我们用“.*?”代替,代表任意字符串。然后通过pattern.findall得到一个movieList数组,数组内的成员如下。


[

'

现代言情
',

'

古代言情
',

'

浪漫青春
',

'

玄幻言情
',

'

仙侠奇缘
',

'

悬疑
',

'

科幻空间
',

'

游戏竞技
',

'

轻小说
'

]


2.二次过滤


我们仅需要类目中文名称,所有需要对得到的数据做二次过滤。


moveTitleList = map(lambda x: x.split("")[1].split("")[0], movieList)


map可以从movieList数组中逐个成员进行函数处理。而我们这里使用lambda定义了一个匿名函数


lambda x: x.split("")[1].split("")[0],意思是在成员中获取“”第二个元素,再获取""第一个元素。即

现代言情
,最终可以获取到“现代言情”这几个字。


3.尾声


以上演示了如何爬取网页中的某一组数据,读者掌握理解后,可以自己尝试爬取其他数据,如推荐栏目下的书名清单等。


如果我的文章解决了你的问题,欢迎点赞、收藏或评论。

相关文章

Java原生代码实现爬虫(爬取小说)

Java也能做爬虫。现在提到爬虫人第一个想到的就是python,其实使用Java编写爬虫也是很好的选择,Java成熟的爬虫框架很多,下面给大家展示一个使用Java基础语言编写的爬取小说的案例:实现功能...

python爬取电子课本,送给居家上课的孩子们

在这个全民抗疫的日子,中小学生们也开启了居家上网课的生活。很多没借到书的孩子,不得不在网上看电子课本,有的电子课本是老师发的网络链接,每次打开网页去看,既费流量,也不方便。今天我们就利用python的...

超有趣!用 Python 爬取抖音热门视频数据,探索爆款密码

在当今的社交媒体时代,抖音无疑是最热门的平台之一。每天都有海量的视频被上传,其中一些视频迅速走红,成为爆款。你是否好奇这些热门视频背后有什么规律?今天,我们就用 Python 来爬取抖音热门视频数据,...

python利用Selenium爬取电影天堂实现电影自由

前几期我们实现了小说,音乐自由,当然不能少了影视自由啦,这期我们就来看看如何利用python实现电影自由。首先老办法我们打开电影天堂的网站,右击检查查看下网站的源码经过分析后暗暗窃喜,跟之前一个套路,...

Python“三步”即可爬取,毋庸置疑

声明:本实例仅供学习,切忌遵守robots协议,请不要使用多线程等方式频繁访问网站。#第一步导入模块import reimport requests#第二步获取你想爬取的网页地址,发送请求,获取网页内...