博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫实战(2)-爬取小说"斗罗大陆3龙王传说”(超详细)
阅读量:6372 次
发布时间:2019-06-23

本文共 1994 字,大约阅读时间需要 6 分钟。

前言

首先,我们来回忆一下上篇爬虫实战讲了什么:讲到了requests和bs4和一些网页基本操作。如果有不熟悉的朋友可以去看看:

今天我们用re模块+requests来实战爬取一下,并写入TXT文件中,效果图如下:

实战

我们今天来爬取一下5200小说网的小说“罗大陆3龙王传说”并写入TXT文件中,我们先分析一下章节网址的规律:

http://www.5200xs.org/52002847/1081834.html

http://www.5200xs.org/52002847/1081835.html

从而得知规律是网址数字的增加。

步骤:

**1.**先获取网页数据,用requests获取,这个大家都会吧?上篇实战文章已经讲过了,这里的url我们一会再赋值:

import  requestsdef get_data(url):   headers = {       'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}   data = requests.get(url,headers=headers)   # 因为直接请求出来的是乱码,所有设置一下编码格式   data.encoding = "gbk"   print(data.text)复制代码

**2.**根据re模块去提取你想要的信息-标题和内容

首先先讲一下符号 (.?)的用法,就是表示匹配xx和xx间的任何字符。用法就是‘xx(.?)xx’

标题:

获取代码:

title = re.findall('

(.*?)

', data.text, re.S)复制代码

内容:

获取代码:

content = re.findall('
(.*?)
', data.text, re.S)复制代码

获取之后会有各种的符号,我们可以把它代替出来:

if content.__len__()>0:           str = content[0].replace("    ", "").replace("
", "")复制代码

**3.**就是通过循环依次获取当前的网页数据,并写入TXT文件中。

完整代码如下:

import  requestsimport  re#创建TXT文件,其中的"a+"是一种模式,表示用于读写,追加模式。f = open("C:/Users/Administrator/Desktop/qi.txt","a+")def get_data(url):   headers = {       'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}   data = requests.get(url,headers=headers)   # 因为直接请求出来的是乱码,所有设置一下编码格式   data.encoding = "gbk"    #获取网页数据成功   if data.status_code==200:       title = re.findall('

(.*?)

', data.text, re.S)     #标题       content = re.findall('
(.*?)
', data.text, re.S)     #内容       if content.__len__()>0 and title.__len__()>0:           str =title[0]+"\n\n"+  content[0].replace("    ", "").replace("
", "")     #标题和内容拼在一起           f.write(str)     #写入TXT   #获取失败   else:       passif __name__ == '__main__':   #这里为了给大家演示,只是取了前一百章   urls = ["http://www.5200xs.org/52002847/{}.html".format(str(i)) for i in range(1081834, 1081933)]   for i in urls:       get_data(i)   f.close()复制代码

希望对刚入门的朋友有所帮助!


转载地址:http://zcyqa.baihongyu.com/

你可能感兴趣的文章
适配mpvue平台的的微信小程序日历组件mpvue-calendar
查看>>
【Linux学习】 Redis常用的一些指令
查看>>
Spring Cloud 中使用Feign解决参数注解无法继承的问题
查看>>
数据迁移方案 + Elasticsearch在综合搜索列表实现
查看>>
干货 | 分分钟教你用Python创建一个区块链
查看>>
Angular开发实践(八): 使用ng-content进行组件内容投射
查看>>
canvas+websocket+vue做一个完整的你画我猜小游戏
查看>>
android复习清单
查看>>
工作代码备用
查看>>
spring cloud互联网分布式微服务云平台规划分析--spring cloud定时调度平台
查看>>
说说如何配置 Webpack
查看>>
小程序中使用箭头函数的问题
查看>>
走进 JDK 之 Long
查看>>
Android打地鼠游戏的修改和优化
查看>>
Java异常
查看>>
map、reduce、filter、for...of、for...in等总结
查看>>
html2canvas-实现页面截图
查看>>
入门 | 从文本处理到自动驾驶:机器学习最常用的50大免费数据集
查看>>
笔记-从源码角度分析alloc与init的底层
查看>>
消除GitHub上的历史记录
查看>>