python+selenium爬取微博热搜存入Mysql的实现方法


Posted in Python onJanuary 27, 2021

最终的效果

废话不多少,直接上图

python+selenium爬取微博热搜存入Mysql的实现方法

这里可以清楚的看到,数据库里包含了日期,内容,和网站link
下面我们来分析怎么实现

使用的库

import requests
from selenium.webdriver import Chrome, ChromeOptions
import time
from sqlalchemy import create_engine
import pandas as pd

目标分析

这是微博热搜的link:点我可以到目标网页

python+selenium爬取微博热搜存入Mysql的实现方法

首先我们使用selenium对目标网页进行请求
然后我们使用xpath对网页元素进行定位,遍历获得所有数据
然后使用pandas生成一个Dataframe对像,直接存入数据库

一:得到数据

python+selenium爬取微博热搜存入Mysql的实现方法

我们看到,使用xpath可以得到51条数据,这就是各热搜,从中我们可以拿到链接和标题内容

all = browser.find_elements_by_xpath('//*[@id="pl_top_realtimehot"]/table/tbody/tr/td[2]/a') #得到所有数据
	context = [i.text for i in c] # 得到标题内容
  links = [i.get_attribute('href') for i in c] # 得到link

然后我们再使用zip函数,将date,context,links合并
zip函数是将几个列表合成一个列表,并且按index对分列表的数据合并成一个元组,这个可以生产pandas对象。

dc = zip(dates, context, links)
  pdf = pd.DataFrame(dc, columns=['date', 'hotsearch', 'link'])

其中date可以使用time模块获得

二:链接数据库

这个很容易

enging = create_engine("mysql+pymysql://root:123456@localhost:3306/webo?charset=utf8")
pdf.to_sql(name='infromation', con=enging, if_exists="append")

总代码

from selenium.webdriver import Chrome, ChromeOptions
import time
from sqlalchemy import create_engine
import pandas as pd

def get_data():
  url = r"https://s.weibo.com/top/summary" # 微博的地址
  option = ChromeOptions()
  option.add_argument('--headless')
  option.add_argument("--no-sandbox")
  browser = Chrome(options=option)
  browser.get(url)
  all = browser.find_elements_by_xpath('//*[@id="pl_top_realtimehot"]/table/tbody/tr/td[2]/a')
  context = [i.text for i in all]
  links = [i.get_attribute('href') for i in all]
  date = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime())
  dates = []
  for i in range(len(context)):
    dates.append(date)
  # print(len(dates),len(context),dates,context)
  dc = zip(dates, context, links)
  pdf = pd.DataFrame(dc, columns=['date', 'hotsearch', 'link'])
  # pdf.to_sql(name=in, con=enging, if_exists="append")
  return pdf

def w_mysql(pdf):
  try:
    enging = create_engine("mysql+pymysql://root:123456@localhost:3306/webo?charset=utf8")
    pdf.to_sql(name='infromation', con=enging, if_exists="append")
  except:
    print('出错了')

if __name__ == '__main__':
  xx = get_data()
  w_mysql(xx)

到此这篇关于python+selenium爬取微博热搜存入Mysql的实现方法的文章就介绍到这了,更多相关python selenium爬取微博热搜存入Mysql内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
Python 自动化表单提交实例代码
Jun 08 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
python中in在list和dict中查找效率的对比分析
May 04 Python
django DRF图片路径问题的解决方法
Sep 10 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
Python如何计算语句执行时间
Nov 22 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
pytorch 实现tensor与numpy数组转换
Dec 27 Python
如何基于windows实现python定时爬虫
May 01 Python
python解析照片拍摄时间进行图片整理
Jul 23 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 #Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 #Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 #Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 #Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 #Python
python re.match()用法相关示例
Jan 27 #Python
selenium+python实现基本自动化测试的示例代码
Jan 27 #Python
You might like
十幅图告诉你什么是PHP引用
2015/02/22 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
Python Flask框架扩展操作示例
2019/05/03 Python
PyQt5 多窗口连接实例
2019/06/19 Python
python二进制文件的转译详解
2019/07/03 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
会计电算化个人求职信范文
2014/01/24 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
民政工作个人总结
2015/02/28 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript