python正则爬取某段子网站前20页段子(request库)过程解析


Posted in Python onAugust 10, 2019

首先还是谷歌浏览器抓包对该网站数据进行分析,结果如下:

该网站地址:http://www.budejie.com/text

该网站数据都是通过html页面进行展示,网站url默认为第一页,http://www.budejie.com/text/2为第二页,以此类推

对网站的内容段子所处位置进行分析,发现段子内容都是在一个 a 标签中

python正则爬取某段子网站前20页段子(request库)过程解析

坑还是有的,这是我第一次写的正则:

content_list = re.findall(r'<a href="/detail-.*" rel="external nofollow" rel="external nofollow" rel="external nofollow" >(.+?)</a>', html_str)

之后发现竟然匹配到了一些推荐的内容,最后我把正则改变下面这样,发现没有问题了,关于正则的知识这里就不做过多解释了

content_list = re.findall(r'<div class="j-r-list-c-desc">\s*<a href="/detail-.*" rel="external nofollow" rel="external nofollow" rel="external nofollow" >(.+?)</a>', html_str)

现在要的是爬取前20页的段子并保存到本地,已经知道翻页的规律和匹配内容的正则,就直接可以写代码了

代码如下,整体思路还是和前两排爬虫博客一样,面向对象的写法:

import requests
import re
import json

class NeihanSpider(object):
  """内涵段子,百思不得其姐,正则爬取一页的数据"""
  def __init__(self):
    self.temp_url = 'http://www.budejie.com/text/{}' # 网站地址,给页码留个可替换的{}
    self.headers = {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
    }

  def pass_url(self, url): # 发送请求,获取响应
    print(url)
    response = requests.get(url, headers=self.headers)
    return response.content.decode()

  def get_first_page_content_list(self, html_str): # 提取第一页的数据
    content_list = re.findall(r'<div class="j-r-list-c-desc">\s*<a href="/detail-.*" rel="external nofollow" rel="external nofollow" rel="external nofollow" >(.+?)</a>', html_str) # 非贪婪匹配
    return content_list

  def save_content_list(self, content_list):
    with open('neihan.txt', 'a', encoding='utf-8') as f:
      for content in content_list:
        f.write(json.dumps(content, ensure_ascii=False))
        f.write('\n') # 换行
      print('成功保存一页!')

  def run(self): # 实现主要逻辑
    for i in range(20): # 只爬取前20页数据
      # 1. 构造url
      # 2. 发送请求,获取响应
      html_str = self.pass_url(self.temp_url.format(i+1))
      # 3. 提取数据
      content_list = self.get_first_page_content_list(html_str)
      # 4. 保存
      self.save_content_list(content_list)

if __name__ == '__main__':
  neihan = NeihanSpider()
  neihan.run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用装饰器和线程限制函数执行时间的方法
Apr 18 Python
谈谈如何手动释放Python的内存
Dec 17 Python
Python解惑之True和False详解
Apr 24 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
Python语言的变量认识及操作方法
Feb 11 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
浅谈python 中类属性共享的问题
Jul 02 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
使用python求解二次规划的问题
Feb 29 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 #Python
Python中的 sort 和 sorted的用法与区别
Aug 10 #Python
Python测试模块doctest使用解析
Aug 10 #Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 #Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 #Python
python实现邮件发送功能
Aug 10 #Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 #Python
You might like
php 读取输出其他文件的实现方法
2016/07/26 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
python简单实现旋转图片的方法
2015/05/30 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
简单了解django缓存方式及配置
2019/07/19 Python
python3.7 的新特性详解
2019/07/25 Python
python hashlib加密实现代码
2019/10/17 Python
python实现连连看游戏
2020/02/14 Python
C#中的验证控件有几种
2014/03/08 面试题
财务出纳员岗位职责
2013/11/26 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
反腐倡廉标语
2014/06/24 职场文书
海洋科学专业求职信
2014/08/10 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
读后感作文评语
2014/12/25 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS