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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
浅谈Python中数据解析
May 05 Python
在Python的Django框架中simple-todo工具的简单使用
May 30 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
Django中间件实现拦截器的方法
Jun 01 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
Python模块汇总(常用第三方库)
Oct 07 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
Python递归调用实现数字累加的代码
Feb 25 Python
Python多线程正确用法实例解析
May 30 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 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
世界上第一台立体声收音机
2021/03/01 无线电
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
javascript基本算法汇总
2016/03/09 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python基于select实现的socket服务器
2016/04/13 Python
深入理解Python3中的http.client模块
2017/03/29 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
儿科护士实习自我鉴定
2013/10/17 职场文书
数学国培研修感言
2014/02/13 职场文书
大学校务公开实施方案
2014/03/31 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
python语言中pandas字符串分割str.split()函数
2022/08/05 Python