目录

  • 糗事百科段子爬取
    • 爬虫功能介绍
    • 所需软件
    • 网页解析
      • 找到所需信息所在代码段
      • 获取信息
    • 编程思路分析
    • 获取当前所有段子
    • 对提取的内容进行优化
    • 数据合并
    • 查看点赞数最多的内容
    • 总结
  • 最后
    • 附代码

糗事百科段子爬取

感谢阅读最爱小鱼果的博客。

本篇博客在于记录本人学习爬虫过程中的一些项目案例,如有错误还请大家批评指正!

爬虫功能介绍

可获取糗事百科段子里当前所有用户ID,段子内容,点赞数。
注:因段子内容为随机,每次打开都会刷新内容,故每个人所看到的段子内容不一定相同

所需软件

1、浏览器(最好为Google Chrome
2、Python IDE(最好为PyCharm
Python3.0+

网页解析

首先打开糗事百科找到并点击段子,鼠标右键点击 检查,找到并点击Elements
如图所示:

找到所需信息所在代码段

1、找到用户ID所在代码段,如图所示:

2、找到段子内容所在代码段,如图所示:

3、找到点赞数所在代码段,如图所示:

获取信息

本篇博客使用正则表达式来提取信息

提取用户ID:

 r'<div class="author clearfix">.*?<h2>\n(.*?)\n</h2>

提取段子:

 r'<div class="content">.*?<span>(.*?)</span>

提取点赞数:

 r'<i class="number">(.*?)</i>'

这里就不多做解释了,看不懂的建议百度正则表达式。

编程思路分析

使用正则表达式可以一次性获取全部用户ID,段子,点赞数
但是是分开的,也就是说用户ID在一个列表里,段子内容在一个列表里,点赞数在一个列表里。
所以我们需要进行合并

获取当前所有段子

获取所有段子,需要遍历每一页里的信息,分析网页url:

第一页:

https://www.qiushibaike.com/text/page/1/

第二页

https://www.qiushibaike.com/text/page/2/

第三页
https://www.qiushibaike.com/text/page/3/

所以我们可以这样遍历:

    for x in range(1,14):url = 'https://www.qiushibaike.com/text/page/%s/' % x

这用就可以生成所有url.

对提取的内容进行优化

不难发现爬取的段子内容含有许多转义字符,如图所示:


所以进行删除,既替换成空:

    for du in duans:nr = re.sub(r'\n|<.*?>|\xa0| ', "", du)ners.append(nr)

综上便获取到了我们所需要的信息。

数据合并

使用zip()函数进行数据合并:

    for val in zip(user, ners, xiao):user, nrs, xiao = valpoom = {'用户': user,'内容': nrs,'点赞': int(xiao)}shi.append(poom)

至此我们就获取到了当前所有信息

查看点赞数最多的内容

突发奇想,想要看看点赞数最多的段子是啥内容,因此加上如下代码:

    shi.sort(key=lambda data: data["点赞"])print(shi[-1])

如图所示:

图片不是很清楚放上文字:

用户: 上天揽九月、
内容: 闺蜜约我去看电影,到了电影院找到位子坐好。闺蜜在背包里掏出一大桶爆米花和一瓶可乐,递给我说:“电影院的零食贵死了,这是我在超市买的。”我怀着无尽的感动,一大口爆米花一口可乐,美滋滋看着电影,一桶爆米花快见底时,我问闺蜜:“你怎么不吃啊,都快被我吃完光了!”闺蜜摇摇头说:“你吃吧,我怕胖!”我…草率了~
点赞: 3164

总结

首先分析源代码,利用正则表达式获取所需信息,再对信息进行处理, 然后将所获取的信息进行合并。最后根据点赞数进行排序找到点赞数最多的段子并打印出来。

最后

感谢阅读最爱小鱼果的博客。

本篇博客在于记录本人学习爬虫过程中的一些项目案例,如有错误还请大家批评指正!

附代码

import requests
import rexiaos = []
shi = []def parse_page(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}response = requests.get(url=url,headers=headers)text = response.textuser = re.findall(r'<div class="author clearfix">.*?<h2>\n(.*?)\n</h2>', text, re.S)duans = re.findall(r'<div class="content">.*?<span>(.*?)</span>', text, re.S)xiao = re.findall(r'<i class="number">(.*?)</i>', text, re.S)ners= []for du in duans:nr = re.sub(r'\n|<.*?>|\xa0| ', "", du)ners.append(nr)for val in zip(user, ners, xiao):user, nrs, xiao = valpoom = {'用户': user,'内容': nrs,'点赞': int(xiao)}xiaos.append(int(xiao))shi.append(poom)def main():for x in range(1,14):url = 'https://www.qiushibaike.com/text/page/%s/' % xparse_page(url)shi.sort(key=lambda data: data["点赞"])print(shi[-1])# print(max(xiaos))if __name__ == '__main__':main()

爬虫爬取糗事百科段子相关推荐

  1. 网络爬虫---爬取糗事百科段子实战

    Python网络爬虫 1.知识要求 掌握python基础语法 熟悉urllib模块知识 熟悉get方法 会使用浏览器伪装技术 如果您对相关知识遗忘了,可以点上面的相关知识链接,熟悉一下. 2.爬取糗事 ...

  2. python爬虫经典段子_Python爬虫-爬取糗事百科段子

    闲来无事,学学python爬虫. 在正式学爬虫前,简单学习了下HTML和CSS,了解了网页的基本结构后,更加快速入门. 1.获取糗事百科url 2.先抓取HTML页面 importurllibimpo ...

  3. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  4. 【Python爬虫系列教程 28-100】小姐姐带你入门爬虫框架Scrapy、 使用Scrapy框架爬取糗事百科段子

    文章目录 Scrapy快速入门 安装和文档: 快速入门: 创建项目: 目录结构介绍: Scrapy框架架构 Scrapy框架介绍: Scrapy框架模块功能: Scrapy Shell 打开Scrap ...

  5. Python爬虫实战之爬取糗事百科段子

    Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...

  6. 爬虫实战1:爬取糗事百科段子

    本文主要展示利用python3.7+urllib实现一个简单无需登录爬取糗事百科段子实例. 如何获取网页源代码 对网页源码进行正则分析,爬取段子 对爬取数据进行再次替换&删除处理易于阅读 0. ...

  7. Python爬虫实战一之爬取糗事百科段子

    点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...

  8. Python3写爬虫(五)爬取糗事百科段子

    2019独角兽企业重金招聘Python工程师标准>>> 最近几天开始用Python3改写网上用Python2写的案例,发现完全可以用Python3来重构Python2的源码.本篇文章 ...

  9. 【网络爬虫】爬取糗事百科段子

    1.前言 自动爬取糗事百科段子,使用Python编写. 输出文件路径需根据实际自己修改哦,默认的是输出100条段子,终止条件可以自己设置. 另糗事百科可能会改版,如有问题,欢迎留言,或者自行更改正则表 ...

最新文章

  1. 笑翻了!想象的论文答辩和真实的论文答辩
  2. 求瑞年的java程序,java 计算瑞年的方法
  3. 【UVA - 10037】Bridge(过河问题,经典贪心)
  4. C/C++:Windows编程—Hook IE浏览器实现URL拦截及更改(上)
  5. RedHat Linux 加入域
  6. 自学python好找工作么-学完Python好找工作吗?为什么有人学完找不到工作?
  7. python迭代器的设计
  8. SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的
  9. Facebook的图片搜索技术揭秘
  10. 【工具使用篇】Visual Studio KeyMap
  11. 【调剂】山东大学控制科学与工程学院生物医学实验室课题组招收硕士研究生...
  12. android点击按钮执行adb命令,Android 按键事件及adb命令模拟
  13. 一个人赶着鸭子去每个村庄卖,每经过一个 村子卖去所赶鸭子的一半又一只。 这样他经过了 七个村子后还剩 两只鸭子,问问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
  14. flask 8用户认证_Salted Password Hashing
  15. 3周个人错误和知识弱点盲点{随时更新}
  16. 双向dijkstra
  17. 阿里云域名可以转账号吗?
  18. 电工与电子技术实验——叠加定理与戴维南定理
  19. mysql查询特定时间数据视频_MySQL如何查询指定时间数据
  20. 用 Java Servlet 实现文件上载(老文新发)

热门文章

  1. 以太坊合约实现批量转账(空投)原理解析
  2. netlogo建模案例_NetLogo用于科研:建模
  3. 机翻《C-CAM: Causal CAM for Weakly Supervised Semantic Segmentation onMedical Image 》
  4. 事业单位计算机面试基础知识,求事业单位面试题目(计算机岗位)
  5. Python零基础速成班-第13讲-Python正则表达式Regex
  6. java实现qq聊天室功能
  7. [JVM]了断局:常量池 VS 运行时常量池 VS 字符串常量池
  8. 怎么用ip查看服务器文件共享,怎么查看已知IP下的共享文件夹!~
  9. 推荐系统_各种方法的损失计算过程
  10. DataFrameDataSet