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 相关文章推荐
Python实现读取并保存文件的类
May 11 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
简单的Python人脸识别系统
Jul 14 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
python实现批量移动文件
Apr 05 Python
python 镜像环境搭建总结
Sep 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
js保留两位小数方法总结
2018/01/31 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
说一说Python logging
2016/04/15 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
美国网上书店:Barnes & Noble
2018/08/15 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
新闻专业个人自我评价
2013/09/21 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
社区消防工作实施方案
2014/03/21 职场文书
学校三节实施方案
2014/06/09 职场文书