基于Python爬取51cto博客页面信息过程解析


Posted in Python onAugust 25, 2020

介绍

提到爬虫,互联网的朋友应该都不陌生,现在使用Python爬取网站数据是非常常见的手段,好多朋友都是爬取豆瓣信息为案例,我不想重复,就使用了爬取51cto博客网站信息为案例,这里以我的博客页面为教程,编写的Python代码!

实验环境

1.安装Python 3.7

2.安装requests, bs4模块

实验步骤

1.安装Python3.7环境

2.安装requests,bs4 模块

打开cmd,输入:pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/

再安装bs4, 输入:pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装后面加上-i https://pypi.tuna.tsinghua.edu.cn/simple/ 表示从清华镜像下载模块,速度会提高好多!

3.编写代码

# 爬取51cto博客页面
import requests
import bs4
import re

def open_url(url):
  # 使用代理
  # proxies = {"http": "127.0.0.1:1080", "https": "127.0.0.1:1080"}
  headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
           'Chrome/57.0.2987.98 Safari/537.36'}

  # res = requests.get(url, headers=headers, proxies=proxies)
  res = requests.get(url, headers=headers)

  return res

def find_titles(res):
  soup = bs4.BeautifulSoup(res.text, 'html.parser')

  # 博客名
  titles = []
  targets = soup.find_all("a", class_="tit")
  for each in targets:
    titles.append(each.text.strip())

  # 阅读量
  reads = []
  read1 = soup.find_all("p", class_="read fl on")
  read2 = soup.find_all("p", class_="read fl")
  for each in read1:
    reads.append(each.text)
  for each in read2:
    reads.append(each.text)

  # 评论数
  comment = []
  targets = soup.find_all("p", class_='comment fl')
  for each in targets:
    comment.append(each.text)

  # 收藏
  collects = []
  targets = soup.find_all("p", class_='collect fl')
  for each in targets:
    collects.append(each.text)

  # 汇总
  result = []
  length = len(titles)
  for i in range(length):
    result.append(titles[i] + '\n' + reads[i] + ' ' + comment[i] + ' ' + collects[i] + '\n')

  return result

# 找出一共有多少个页面
def find_depth(res):
  soup = bs4.BeautifulSoup(res.text, 'html.parser')
  depth = soup.find('li', class_='next').previous_sibling.previous_sibling.text

  return int(depth)

def main():
  host = "https://blog.51cto.com/13760351"
  res = open_url(host)
  depth = find_depth(res)

  result = []
  for i in range(1, depth + 1):  #范围是1到6页
    url = host + '/p' + str(i)  #网页链接是后面加上/pi
    res = open_url(url)
    result.extend(find_titles(res))

 # 写入文本文件中
  with open("51cto博客.txt", "w", encoding="utf-8") as f:
    for each in result:
      f.write(each)

#主程序入口
if __name__ == "__main__":
  main()

4.运行代码,查看效果

阿里云服务器安装postfix--邮箱服务(排坑过程详解) 荐 置顶
阅读 10000+ 评论 2 收藏 9
(教科书式教程!)在VMware Workstation 14 上安装CentOS 7 【送安装包】 置顶
阅读 10000+ 评论 10 收藏 0
CentOS 7 系统YUM 安装MySQL 5.7
阅读 136 评论 0 收藏 1
Docker 安装(官方安装方法)
阅读 153 评论 0 收藏 0
运维实用工具推荐
阅读 159 评论 0 收藏 0
K8S 部署 Rancher 2.X 版本
阅读 1068 评论 0 收藏 0
python 练习题(三)
阅读 260 评论 0 收藏 0
DNS--域名解析
阅读 170 评论 0 收藏 0
python 练习题(二)
阅读 353 评论 0 收藏 0
K8S 使用Dashboard部署nginx群集
阅读 124 评论 0 收藏 0
CentOS 7 离线部署K8S群集
阅读 280 评论 0 收藏 0
MySQL函数--数学函数
阅读 136 评论 0 收藏 0
CentOS 7 安装SVN
阅读 192 评论 2 收藏 0
MYSQL 数据库索引
阅读 178 评论 0 收藏 0
CentOS 8 深入优化 nginx 服务
阅读 509 评论 0 收藏 0
CentOS 7 搭建nginx网页服务
阅读 207 评论 0 收藏 0
Linux 文本处理利器--Awk常用命令
阅读 940 评论 0 收藏 0
Liunx 文件的查找
阅读 163 评论 0 收藏 0
Linux 流编辑--Sed命令及语法
阅读 178 评论 0 收藏 0
MYSQL行为
阅读 110 评论 0 收藏 0
MYSQL数据库--连接查询
阅读 269 评论 0 收藏 0
MYSQL 数据库基本操作
阅读 271 评论 0 收藏 0
Ansible 常用模块
阅读 119 评论 0 收藏 0
CentOS 8部署自动化运维工具-- Ansible
阅读 358 评论 0 收藏 0
CentOS 7 部署百万pv项目(高可用架构)
阅读 2139 评论 0 收藏 4
MYSQL查询--子查询,合并查询
阅读 242 评论 0 收藏 0
MySQL伪事务和性能
阅读 178 评论 0 收藏 0
MYSQL数据库--定义表和字段的别名
阅读 256 评论 0 收藏 0
MYSQL查询--聚合函数查询
阅读 132 评论 0 收藏 0
MYSQL 查询命令--单表查询
阅读 205 评论 0 收藏 0
ELK 平台收集Tomcat日志记录
阅读 316 评论 0 收藏 0
CentOS 8 部署ELK日志分析平台
阅读 730 评论 0 收藏 0
Docker 数据管理和网络通信
阅读 246 评论 0 收藏 0
Docker 镜像创建方法
阅读 143 评论 0 收藏 0
Docker 容器操作
阅读 195 评论 0 收藏 0
Docker 镜像操作
阅读 143 评论 0 收藏 0
CentOS 8 系统图形化安装教程(超详细)
阅读 4570 评论 0 收藏 0
Docker 部署 nginx + tomcat
阅读 501 评论 0 收藏 0
Docker 部署war包项目
阅读 2173 评论 0 收藏 1
华为云服务器安装 Docker 容器
阅读 901 评论 0 收藏 0
CentOS 8 安装docker 容器
阅读 4848 评论 0 收藏 0
解决 confluence 和 jira 数据包问题
阅读 225 评论 0 收藏 0
CentOS 7.6 搭建Gitlab教程
阅读 234 评论 0 收藏 0
confluence 配置邮件服务器
阅读 516 评论 0 收藏 0
Shell脚本实现 tomcat 日志定时切割
阅读 263 评论 0 收藏 0
阿里云服务器Centos7 配置465端口号发送邮件
阅读 774 评论 0 收藏 0
MQTT 限制匿名用户访问,开启用户密码认证
阅读 640 评论 0 收藏 0
CentOS 7.6 部署Redis 数据库
阅读 150 评论 0 收藏 0
CentOS 7.6 破解安装 Confluence 和 Jira(送安装包和破解工具)
阅读 5800 评论 0 收藏 0
Centos 7 安装MQTT(EMQ)服务端
阅读 943 评论 0 收藏 0
CentOS 7 实现yum安装最新php版本
阅读 2527 评论 0 收藏 0
Python3 对文件操作
阅读 886 评论 0 收藏 0
Python3 操作Mysql数据库
阅读 820 评论 0 收藏 1
Selenium 定位元素的8种方法介绍
阅读 1536 评论 0 收藏 0
Python Selenium 自动配置zabbix邮箱报警功能
阅读 568 评论 0 收藏 0
Zabbix 配置QQ邮箱报警通知
阅读 2043 评论 0 收藏 0
CentOS 7 系统搭建私服仓库Nexus
阅读 664 评论 0 收藏 1
解决CentOS 7 最小化安装后无ifconfig命令
阅读 687 评论 0 收藏 0
CentOS 7 安装禅道并绑定公司内网邮箱
阅读 1161 评论 0 收藏 0
Shell 脚本自动安装公司内部邮箱服务器--Postfix
阅读 7066 评论 0 收藏 4
解决虚拟机在桥接模式下设置静态ip,无法上外网的各种问题
阅读 10000+ 评论 6 收藏 0
Shell 脚本自动安装cobbler(改进+填坑)
阅读 10000+ 评论 3 收藏 0
Shell 脚本自动安装 Cobbler (知识点+踩坑点)
阅读 5292 评论 0 收藏 6
CentOS 7.4 系统升级至7.6
阅读 4738 评论 4 收藏 0
超实用技能--快速查看windows WiFi密码
阅读 4518 评论 0 收藏 0
Jenkins自动化部署安卓项目
阅读 7574 评论 0 收藏 1
记一次阿里云服务器安装Python的血泪史
阅读 1671 评论 6 收藏 1
Jenkins自动化部署nodejs项目(前端项目)
阅读 1445 评论 0 收藏 2
Jenkins自动部署发布Java代码(完整教程)
阅读 9192 评论 0 收藏 1
Jenkins自动化打包--war包
阅读 9444 评论 2 收藏 3
shell 搭配 python 自动安装zabbix监控端详解
阅读 1112 评论 0 收藏 1
在CentOS 7系统下升级 Jenkins版本(含排坑过程)
阅读 7223 评论 4 收藏 0
Window 10 安装python 3.7 + selenium (附最新安装包)
阅读 2984 评论 0 收藏 0
CentOS 7 轻松安装Jenkins
阅读 3259 评论 0 收藏 1
脚本安装Discuz论坛(shell + Python 实现自动化安装)
阅读 1783 评论 0 收藏 0
Shell脚本自动源码包安装LA/NMP架构详解(赠软件包+脚本)
阅读 3068 评论 0 收藏 0
shell脚本一键安装Tomcat服务
阅读 2192 评论 0 赞赏 1
【值得收藏!】Vi 文本编辑器细讲
阅读 789 评论 4 收藏 1
企业应用---部署LAMP平台 + Discuz论坛【赠安装包】
阅读 2032 评论 0 收藏 2
【高效装机】PXE实现无人值守安装CentOS 6
阅读 4144 评论 0 收藏 1
在CentOS 7 上安装Oracle 12c 【赠安装包】
阅读 4776 评论 0 收藏 1
轻松部署MFS分布式文件系统 【内附源码包】
阅读 3049 评论 0 收藏 1
Memcached + LAMP 架构安装详解【送源码包】
阅读 3523 评论 4 收藏 0
部署MySQL-MMM 高可用群集
阅读 1123 评论 0 收藏 0
搭建 MySQL 读写分离(内附源码包)
阅读 573 评论 2 收藏 1
Mysql数据库主从复制
阅读 716 评论 0 收藏 0
mysql数据库基本命令---多条数据的同时操作
阅读 999 评论 0 收藏 0
使用Haproxy 搭建web群集
阅读 496 评论 2 收藏 0
MySQL数据库源码包安装(5.7最新版本)
阅读 568 评论 0 收藏 0
解决PXE装机报警----重复安装系统,无法进入用户登录界面
阅读 1521 评论 0 收藏 0
解决PXE装系统报警问题----写入空间不足
阅读 705 评论 0 收藏 0
Nginx 服务语法正确,服务启动失败解决方法
阅读 767 评论 0 收藏 0
CentOS 7 实现Nginx+Tomcat 负载均衡
阅读 685 评论 0 收藏 0
Nginx 构建虚拟主机
阅读 618 评论 0 收藏 0
Nginx 服务安全优化---隐藏版本号、网页缓存、日志分割
阅读 599 评论 0 收藏 0
轻松部署Tomcat服务器
阅读 346 评论 0 收藏 0
Apache网页安全优化----设置防盗链和隐藏版本信息
阅读 748 评论 0 收藏 0
手工编译安装Apache网站(赠送源码包)
阅读 638 评论 0 收藏 1
Apache构建虚拟web主机
阅读 747 评论 0 收藏 0
CentOS 6 yum 安装Apache网站
阅读 2072 评论 0 收藏 0
搭建AWStats日志分析系统(内附awstats软件包)
阅读 10000+ 评论 0 收藏 0
图文详解cobbler 自动装机教程 (内附epel源)
阅读 10000+ 评论 8 收藏 2
DNS分离解析教学 超简单!
阅读 679 评论 0 收藏 0
FTP服务最安全认证模式---虚拟账户访问
阅读 4440 评论 0 收藏 0
FTP服务器--实现本地用户访问,拒绝匿名用户
阅读 749 评论 0 收藏 0
快速搭建FTP服务器--实现匿名用户上传和下载
阅读 1296 评论 2 收藏 0
Linux 6.5 服务器上搭建本地yum仓库
阅读 2206 评论 0 收藏 0
【超好用】弱口令扫描工具John the Ripper 图文教程(附软件包)
阅读 2669 评论 4 收藏 1
详述在Linux上挂载window共享文件夹
阅读 634 评论 12 收藏 0
Redhat Linux 6.5 图文详细安装教程【附安装包】
阅读 7550 评论 8 收藏 2

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

Python 相关文章推荐
Python抓取百度查询结果的方法
Jul 08 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
python中列表和元组的区别
Dec 18 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
python统计字符的个数代码实例
Feb 07 Python
Django REST framwork的权限验证实例
Apr 02 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
Python使用requests模块爬取百度翻译
Aug 25 #Python
Python爬虫使用bs4方法实现数据解析
Aug 25 #Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 #Python
Python Selenium实现无可视化界面过程解析
Aug 25 #Python
一文读懂Python 枚举
Aug 25 #Python
详解python变量与数据类型
Aug 25 #Python
python获取百度热榜链接的实例方法
Aug 25 #Python
You might like
咖啡常见的种类
2021/03/03 新手入门
php文件上传你必须知道的几点
2015/10/20 PHP
laravel学习教程之关联模型
2016/07/30 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
vue中axios封装使用的完整教程
2021/03/03 Vue.js
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Django框架多表查询实例分析
2018/07/04 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
企业内控岗位的职责
2014/02/07 职场文书
教师专业自荐书范文
2014/02/10 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
员工安全生产承诺书
2014/05/22 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
公司人事任命通知
2015/04/20 职场文书
2016年教师节感言
2015/12/09 职场文书
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js