Python 网络爬虫实战——爬取小说网站

首先我们需要import requests这个模块,通过requests这个模块获取url数据。我这里获取的是一个盗版小说网站笔趣看中斗罗大陆第一章节的数据,先将网站字符串赋给target然后通过requests.get方法获取url,然后通过content方法直接获取bytes类型的原始网页数据,如果是使用text方法则获取到的为经过Unicode编码的数据,经过Unicode编码的数据在pycharm控制台会出现乱码的情况,所以还是建议直接获取原始数据。

import requests
def climb():target = 'https://www.biqukan.net/book/121650/43344227.html'rq = requests.get(url=target)htmlc = rq.contenthtmlt = rq.textprint("原始数据:{}".format(htmlc))print("经过Unicode编码后的数据:{}".format(htmlt))
climb()

运行结果:

我们可以看到原始数据是bytes传入的,而后面的数据则是通过Unicode编码之后传入的,bytes类型的很难进行阅读,但是对后面的数据处理却是有非常大的遍历。接下来我们要进行的就是对通过requests获取的数据的处理,我们先去install一个专门用来处理网页数据的模块bs4,,直接通过pip安装或者通过pycharm设置中搜索安装都是可以的。然后将这个包import进来,from bs4 import BeautifulSoup,通过BeautifulSoup我们可以解析网页数据,比如说只将html中div中属于某个class的内容输出来。下图是笔趣看中斗罗大陆第一章节的网页源码,我们通过BeautifulSoup中find_all方法找到属于div且属于panel-body这个class的内容,panel-body是正文的内容。

import requests
from bs4 import BeautifulSoup
def climb():target = 'https://www.biqukan.net/book/121650/43344227.html'rq = requests.get(url=target)html = rq.contentbs = BeautifulSoup(html)details = bs.find_all('div', class_='panel-body')print(details)
climb()

运行结果:

出现的红字警告是因为你解析数据的时候没有指定解析器,如果想要没有这条警告,可以通过pip安装html5lib这个模块,然后在解析的时候指定解析器为html5lib

import requests
from bs4 import BeautifulSoup
def climb():target = 'https://www.biqukan.net/book/121650/43344227.html'rq = requests.get(url=target)html = rq.contentbs = BeautifulSoup(html, 'html5lib')details = bs.find_all('div', class_='panel-body')print(details)
climb()

运行结果:

可以发现这样一来就没有警告了,这样网页的初步爬取就已经完成了,我们要做的第二步就是将爬取解析之后的一些标签去掉,去掉标签最简单的方法就是用replace方法将标签代替掉,br标签可以使用回车代替。不难发现我们通过find_all得到的是一个列表,而这个列表只有一项,知道这个之后我们可以通过replace方法来将第一项中的br标签用回车代替。还有一个简单的办法就是使用text方法直接提取文本。

import requests
from bs4 import BeautifulSoup
def climb():target = 'https://www.biqukan.net/book/121650/43344227.html'rq = requests.get(url=target)html = rq.contentbs = BeautifulSoup(html, 'html5lib')details = bs.find_all('div', class_='panel-body')print(details[0].text)
climb()

运行结果:

同样的方法我们可以从章节页获取所有章节,每个章节都是相同的class,然后通过每个章节的超链接从每个章节中获取文本。

import requests
from bs4 import BeautifulSoupdef climb():target = "https://www.biqukan.net/book/121650/"rq = requests.get(url=target)html = rq.contentbs = BeautifulSoup(html, 'html5lib')details = bs.find_all('dd', class_='col-md-3')with open('test.text', 'a', encoding='utf-8') as f:f.write("斗罗大陆IV终极斗罗\n")i = 0for d_each in details:i += 1a_buff = BeautifulSoup(str(d_each), 'html5lib')a = a_buff.find_all('a')if a:f.write(a[0].string + '\n')rq_buf = requests.get(url=target + a[0].get('href'))text_1 = BeautifulSoup(rq_buf.content, 'html5lib').find_all('div', class_='panel-body')[0].texttext_buf = text_1.replace(" ", "")text_buf = text_buf.replace("\n", "")if text_buf[-4:] == "继续阅读":rq_buf2 = requests.get(url=(target + a[0].get('href').replace(".html", "") + '_2.html'))text_all = text_1 + BeautifulSoup(rq_buf2.content, 'html5lib').find_all('div', class_='panel-body')[0].textf.write(text_all + '\n\n')print("下载进度:%.3f%%" % float(i/len(details)))climb()

Python 网络爬虫——爬取小说网站相关推荐

  1. python网络爬虫_Python网络爬虫——爬取视频网站源视频!

    原标题:Python网络爬虫--爬取视频网站源视频! 学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 ...

  2. Python:网络爬虫爬取某表情包网站

    Python:网络爬虫爬取某表情包网站 参考: 爬虫基础知识点汇总(html文件基础和4个常用库 超级详细长文预警) [爬虫教程]吐血整理,最详细的爬虫入门教程~ HTML的简单介绍 HTML的全称为 ...

  3. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  4. python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  5. python抓取朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)...

    原标题:如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下) 前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往 ...

  6. Python网络爬虫爬取虎扑步行街爆照区话题

    Python网络爬虫爬取虎扑步行街爆照区话题 作者:郜科科 最近的任务挺多的,但是心情很烦躁,想做一些自己喜欢的东西,前些时候感觉Python爬虫很好玩,就自学了一下.本人比较喜欢逛街--虎扑步行街, ...

  7. 用python网络爬虫爬取英雄联盟英雄图片

    用python爬虫爬取lol皮肤. 这也用python网络爬虫爬取lol英雄皮肤,忘了是看哪个大神的博客(由于当时学了下就一直放在这儿,现在又才拿出来,再加上马上要考二级挺忙的.),代码基本上是没改, ...

  8. 使用python网络爬虫爬取新浪新闻(一)

    使用python网络爬虫爬取新浪新闻 第一次写博客,感觉有点不太习惯!不知道怎么突然就想学学爬虫了,然后就用了一天的时间,跟着教程写了这个爬虫,!不说废话了,我将我从教程上学习的东西整个写下来吧,从头 ...

  9. python如何爬虫网页数据-python网络爬虫爬取网页内容

    1.什么是网络爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自 ...

  10. python网络爬虫——爬取嗅事百科

    网络爬虫 - 爬取嗅事百科 爬取过程分三大步: 一,请求,获取网页源码 url为:url =' https : //www.qiushibaike.com/8hr/page/'+ str(page)先 ...

最新文章

  1. 运行npm update等命令出错后如何分析问题根源
  2. FreeEIM 与飞鸽传书的区别
  3. cacti监控java,Cacti监控tomcat的方法
  4. subline text3设置中文亲测
  5. EF之通过不同条件查找去重复
  6. OpenCV2:Mat属性type,depth,step
  7. 学生考勤及行为管理系统_高校学生考勤管理系统
  8. 发那可g10_fanuc系统中的G10
  9. 图论及其应用 2016年 期末考试 答案总结
  10. ios越狱c语言编译器,iOS12越狱
  11. 《淘宝技术这十年》读书总结
  12. 别了,Easy微博!
  13. 分页虚拟存储管理——页面置换算法例题
  14. android 强制竖排,[Android]实现文字竖排
  15. mysql调整specified key_MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法...
  16. skb_buff操作
  17. 乐得瑞专门为笔记本/平板Type-C接口,HOST端解决方案
  18. 郑州大学计算机考研拟录取名单,郑州大学2017年统考硕士生拟录取名单2(17)
  19. 白话斯坦福机器学习课程-CS229 - 监督学习应用:梯度下降
  20. 100以内所有质数的输出。

热门文章

  1. Windows端口扫描关闭工具
  2. ubuntu svn命令
  3. Java游戏框架编写
  4. spring定时器详解
  5. AD教程系列 | 3 - 创建原理图库和PCB库
  6. idea导入项目后,没有项目结构
  7. 【有利可图网】PS实战教程28:巧用调整边缘滤镜抠毛发
  8. CentOS7下安装WPS
  9. PB通过VDN实现Http上传、下载
  10. 离线安装CDH5集群及相关软件