最近在学爬虫,这里用实例来与大家分享一下我学习的经验。

这里讲一个爬取静态网页内容的实例,Python一般利用正则表达式爬取静态静态网页的内容,而且因为静态网页源代码固定,不会发生变化,所以比较简单,这里选内涵段子吧作为例子。

内涵段子吧里的段子分为很多页,大家可以点击每一页,观察一下网址的变化,最后会发现每一页的url地址都遵循一个规则:

https://www.neihan8.com/article/list_5_"+page+".html"

page就是每一页在网页中的页码,比如第六页的内容,url地址是:

https://www.neihan8.com/article/list_5_6.html

给大家看一下网页的内容(第六页):

右击网页空白处,点击“查看网页源代码”:

我们的目标是把段子爬下来,可以发现,每个段子都可以找到一个特殊标记来作为开头和结尾:

我们的正则表达式就可以根据这个规则来进行编写:

#创建正则表达式规则对象,匹配每页里的段子内容,re.S表示匹配全部字符串内容pattern = re.compile(r'<div\sclass="f18 mb20">(.*?)</div>', re.S)

前期的准备工作都做完了,下面讲解代码。

现在一般项目的代码都采用模块化编程,因为这样可以降低代码间的耦合度并且易于扩展功能,我们的代码最好也进行模块化编程。

第一步,导入所需要的库文件:

from urllib import request
import re

注意:我这里用的是Python3,Python2需要导入的库文件是urllib2,urllib2.函数()==urllib.request.函数(),函数名是一样的。

第二步,需要找到网页并下载网页中的所有内容:

    def load_page(self,page):"""下载页面:return:"""#url地址url = "https://www.neihan8.com/article/list_5_" + str(self.page) + ".html"#报头,模拟网页点击headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}#构建请求req = request.Request(url,headers=headers)#发送请求并接收网页返回值response = request.urlopen(req)#获得网页全部内容html = response.read()#创建正则表达式规则对象,匹配每页里的段子内容,re.S表示匹配全部字符串内容pattern = re.compile(r'<div\sclass="f18 mb20">(.*?)</div>', re.S)#转码html_tran = html.decode(encoding="gbk", errors="strict")#讲正则表达式对象应用到HTML源码,获得目标内容(段子)content_list = pattern.findall(html_tran)#调用deal_page处理段子里的杂七杂八的东西self.deal_page(content_list)

第二步,编写代码处理段子里杂七杂八的东西:

    def deal_page(self,content_list):"""处理每页的段子content_list:煤业的段子列表集合:return:"""for content in content_list:#将每个段子挨个处理content = content.replace("<p>","").replace("</p>","").replace("<br>","").replace("<br />","").replace("&ldquo;","").replace("&rdquo;","")#处理完后调用write_page()函数将每个段子写入文件内self.write_page(content)

第三步,将处理好的内容写到文件里:

    def write_page(self,content):"""把网页内容逐个写到文件中:return:"""#写入文件,a+为在原有的文件里追加,如果没有这个文件会自动创建with open("duanzi.txt","a+") as f:print("正在写入数据......")f.write(content)

至此,代码的主体部分就完成了,下面贴完整的代码:

from urllib import request
import re
import timeclass Spider:def __init__(self):#初始化页面起始页码self.page = 1#如果是True继续爬取self.switch = Truedef load_page(self,page):"""下载页面:return:"""#url地址url = "https://www.neihan8.com/article/list_5_" + str(self.page) + ".html"#报头,模拟网页点击headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}#构建请求req = request.Request(url,headers=headers)#发送请求并接收网页返回值response = request.urlopen(req)#获得网页内容html = response.read()#创建正则表达式规则对象,匹配每页里的段子内容,re.S表示匹配全部字符串内容pattern = re.compile(r'<div\sclass="f18 mb20">(.*?)</div>', re.S)#转码html_tran = html.decode(encoding="gbk", errors="strict")#讲正则表达式对象应用到HTML源码,获得目标内容(段子)content_list = pattern.findall(html_tran)#调用deal_page处理段子里的杂七杂八的东西self.deal_page(content_list)def deal_page(self,content_list):"""处理每页的段子content_list:每页的段子列表集合:return:"""for content in content_list:#将每个段子挨个处理content = content.replace("<p>","").replace("</p>","").replace("<br>","").replace("<br />","").replace("&ldquo;","").replace("&rdquo;","")#处理完后调用write_page()函数将每个段子写入文件内self.write_page(content)def write_page(self,content):"""把网页内容逐个写到文件中:return:"""#写入文件,a+为在原有的文件里追加,如果没有这个文件会自动创建with open("duanzi.txt","a+") as f:print("正在写入数据......")f.write(content)def start_work(self):"""控制爬虫运行:return:"""#循环执行,知道self.switch==Falsewhile self.switch==True:#用户控制爬取的次数command = input("如果继续爬取,请输入1,否则输入0:")if command=="0":self.switch=Falseprint("谢谢使用!")elif command=="1":self.load_page(self.page)#每次爬取完后页面自动加1self.page += 1else:print("输入错误!")if __name__ == "__main__":duanzi_spider = Spider()duanzi_spider.start_work()

这里我写的代码比较友好,所以代码量比较多,大家可以不用写这么多,只写出主体功能就可以了。爬取静态网页的套路比较固定:

第一步,要爬取的网页的URL地址;

第二步,查看网页源代码,看目标内容前后有什么特别的地方,利用这个特别的地方来写正则表达式;

第三步,构建请求;

第四步,发送请求并接收返回值;

第五步,利用第四步的返回值获取网页内容,利用正则表达式进行匹配。

至此,我们已经获得了我们想要的内容,接下来是打印还是往文件里写,就看大家怎么操作了。

如果有些的不对的地方还请大家批评指正。

Python爬虫爬取静态网页实例一:爬取内涵段子吧上的段子相关推荐

  1. 【爬虫】毕设学习记录:python爬取静态网页(只爬取单页)

    毕设题目是对指定网页内容进行正负向判断,并输出判断结果. 所以只需要爬取单页面的内容即可. 目标网页:在途网-哈尔滨酒店评价 [第一步:客户端向目标网址(服务器)发起get请求] import req ...

  2. python爬取网页停止_Python爬虫之爬取静态网页

    所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的信息.所以,想要学习python爬虫,需要具备一些http的 ...

  3. Python爬虫爬取静态网页基本方法介绍

    爬取静态网页的技术 数据请求模块 一.Requests库 发送GET请求 发送POST请求 get请求和post请求两者之间的区别 处理响应 定制请求头 验证Cookie 保持会话 二.urllib库 ...

  4. python爬取斗鱼鱼吧_[Python爬虫]使用Python爬取静态网页-斗鱼直播

    作者:宅必备 Python爱好者社区--专栏作者 一个会写Python的Oracle DBA 个人公众号:宅必备 公众号:Python爱好者社区 作者其他文章: 好久没更新Python相关的内容了,这 ...

  5. 一步一步学习专栏:Python爬取静态网页(猫眼top100),实力好文

    一步一步学习专栏:静态网页爬取 阿巴阿巴阿巴 大家好,我是猕猴tou儿,我又回来了,这篇帖子将以猫眼电影榜单top100榜为例讲解爬取静态网址的基本思路与爬取方法. 环境 这也是我们的第一步: imp ...

  6. python爬取静态网页_Source of a. 使用Python爬取静态网页-斗鱼直播 - django-\/\/ i K |...

    2018-02-09 python 宅必备 好久没更新Python相关的内容了,这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 第一节我们介绍如何爬取静态网页 静态网页指的是网页的 ...

  7. Python爬虫系列之MeiTuan网页美食版块商家数据爬取

    Python爬虫系列之MeiTuan网页美食版块商家数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代 ...

  8. Python爬虫:最牛逼的 selenium爬取方式!

    Python爬虫:最牛逼的 selenium爬取方式! 作为一个男人 在最高光的时刻 这是小编准备的python爬虫学习资料,加群:700341555即可免费获取! Python爬虫:最牛逼的 sel ...

  9. Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片

    Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...

最新文章

  1. Win2008 server backup系统备份组件安装
  2. JSON 常量详情参考 (内含对中文不转义的参数)
  3. 【Linux基础】kiickstart无人值守安装
  4. 深度学习之基于Tensorflow2.0实现AlexNet网络
  5. antd autoplay按f12才会轮播_涨知识了!原来这才是电脑键盘上,F1到F12的正确用法...
  6. pythonisnan_python - 在NumPy中快速检查NaN
  7. python实现选择文件_用tkinter 实现从文件夹选择文件并显示
  8. 从前台获取的数据出现乱码的解决方法
  9. java序列化与深度克隆
  10. scala数组入门到熟悉
  11. 三角网导线平差实例_导线平差实例(一):简易平差
  12. 周根项《一分钟速算》全集播放amp;下载地址
  13. 计算机考研408每日一题 day19
  14. echart表格颜色设置
  15. Mantis 安装与配置及使用
  16. 决定物联网安全的有哪些因素
  17. 类ApplicationInfo详解
  18. 8个 Chatbot 框架介绍
  19. 常见英语面试问答_40个常见的工作面试问答
  20. 笔记本电脑使用电池时屏幕不停的更改亮度 - 解决方案

热门文章

  1. 【秋招之Java基础】
  2. Redis 性能优化 —— 关闭 THP
  3. Java并发26:Atomic系列-ABA问题-带版本戳的原子引用类型AtomicStampedReference与AtomicMarkableReference
  4. Java 的浮点型数据
  5. Lua Base64加密解密
  6. 各种未解决配置烦心事:
  7. 在JSP中运用 Ajax
  8. iOS KVC和KVO简介
  9. 【已解决】关于Socket编程:客户端、服务端对象流交互数据丢失的问题
  10. 【Python自动化办公】实现excel表中的数据批量导入到word指定位置(表格形式和下滑线形式)