Python爬虫爬取微博热搜保存为 Markdown 文件的源码


Posted in Python onFebruary 22, 2021

什么是爬虫?

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据

爬虫可以做什么?

你可以爬取小姐姐的图片,爬取自己有兴趣的岛国视频,或者其他任何你想要的东西,前提是,你想要的资源必须可以通过浏览器访问的到。

爬虫的本质是什么?

上面关于爬虫可以做什么,定义了一个前提,是浏览器可以访问到的任何资源,特别是对于知晓web请求生命周期的学者来说,爬虫的本质就更简单了。爬虫的本质就是模拟浏览器打开网页,获取网页中我们想要的那部分数据。

微博热搜榜python爬虫,仅供学习交流


Python爬虫爬取微博热搜保存为 Markdown 文件的源码

源码及注释:

# -*- coding=UTF-8 -*-
#!usr/bin/env python

import os
import time
import requests
from lxml import etree

url = "https://s.weibo.com/top/summary?cate=realtimehot"
headers={
 'Host': 's.weibo.com',
 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
 'Accept-Encoding': 'gzip, deflate, br',
 'Accept-Language': 'zh-CN,zh;q=0.9',
 'Connection': 'keep-alive',
 'Referer': 'https://weibo.com/',
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
r = requests.get(url,headers=headers)
print(r.status_code)

html_xpath = etree.HTML(r.text)
data = html_xpath.xpath('//*[@id="pl_top_realtimehot"]/table/tbody/tr/td[2]')
num = -1

# # 解决存储路径
# time_path = time.strftime('%Y{y}%m{m}%d{d}',time.localtime()).format(y='年', m='月', d='日')
# time_name = time.strftime('%Y{y}%m{m}%d{d}%H{h}',time.localtime()).format(y='年', m='月', d='日',h='点')
# root = "./" + time_path + "/"
# path = root + time_name + '.md'
# if not os.path.exists(root):
#  os.mkdir(root)

# 解决存储路径
time_path = time.strftime('%Y{y}%m{m}%d{d}',time.localtime()).format(y='年', m='月', d='日')
time_name = time.strftime('%Y{y}%m{m}%d{d}%H{h}',time.localtime()).format(y='年', m='月', d='日',h='点')
year_path = time.strftime('%Y{y}',time.localtime()).format(y='年')
month_path = time.strftime('%m{m}',time.localtime()).format(m='月')
day_month = time.strftime('%d{d}',time.localtime()).format(d='日')
all_path = "./" + year_path + '/'+ month_path + '/' + day_month
if not os.path.exists(all_path):
 # 创建多层路径
 os.makedirs(all_path)

# 最终文件存储位置
root = all_path + "/"
path = root + time_name + '.md'
print(path)
# 文件头部信息
with open(path,'a') as f:
 f.write('{} {}\n\n'.format('# ',time_name+'数据'))
f.close()

for tr in (data):
 title = tr.xpath('./a/text()')
 hot_score = tr.xpath('./span/text()')
 
 num += 1

 # 过滤第 0 条
 if num == 0:
  pass
 else:
  with open(path,'a') as f:

   f.write('{} {}、{}\n\n'.format('###',num,title[0]))
   f.write('{} {}\n\n'.format('微博当时热度为:',hot_score[0]))
   
  f.close()

  print(num,title[0],'微博此时的热度为:',hot_score[0])

运行:

运行结束后会在当前文件夹下生成以时间命名的文件夹,并且会生成以具体小时为单位的具体时间命名的 Markdown 文件,如下:

Python爬虫爬取微博热搜保存为 Markdown 文件的源码

查看:

Python爬虫爬取微博热搜保存为 Markdown 文件的源码

到此这篇关于Python爬虫爬取微博热搜保存为 Markdown 文件的文章就介绍到这了,更多相关Python爬虫爬取微博热搜保存内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python性能优化技巧
Mar 09 Python
Python中字符串对齐方法介绍
May 21 Python
Python中有趣在__call__函数
Jun 21 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
详解Django中类视图使用装饰器的方式
Aug 12 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
python Yaml、Json、Dict之间的转化
Oct 19 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 Python
Python爬虫制作翻译程序的示例代码
Feb 22 #Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 #Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 #Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 #Python
anaconda升级sklearn版本的实现方法
Feb 22 #Python
详解Python 中的 defaultdict 数据类型
Feb 22 #Python
python快速安装OpenCV的步骤记录
Feb 22 #Python
You might like
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
node.js中watch机制详解
2014/11/17 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
python获取标准北京时间的方法
2015/03/24 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python保留小数位的三种实现方法
2020/01/07 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
成品仓管员岗位职责
2013/12/11 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
亲属关系公证书样本
2015/01/23 职场文书
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js