当前位置: 移动技术网 > IT编程>脚本编程>Python > 基于Python爬取51cto博客页面信息过程解析

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

2020年08月26日  | 移动技术网IT编程  | 我要评论
介绍提到爬虫,互联网的朋友应该都不陌生,现在使用python爬取网站数据是非常常见的手段,好多朋友都是爬取豆瓣信息为案例,我不想重复,就使用了爬取51cto博客网站信息为案例,这里以我的博客页面为教程

介绍

提到爬虫,互联网的朋友应该都不陌生,现在使用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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网