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来开发Markdown脚本扩展的实例分享
Mar 04 Python
深入解析Python编程中super关键字的用法
Jun 24 Python
Python检测网络延迟的代码
May 15 Python
深入分析python中整型不会溢出问题
Jun 18 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
python之mock模块基本使用方法详解
Jun 27 Python
python是否适合网页编程详解
Oct 04 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
python 实现生成均匀分布的点
Dec 05 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
python实现横向拼接图片
Mar 23 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 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
用PHP4访问Oracle815
2006/10/09 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
C#面试问题
2016/07/29 面试题
如何开发安全的AJAX应用
2014/03/26 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
办公室员工岗位工作职责
2014/03/10 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
中学社团活动总结
2015/05/07 职场文书
PHP遍历数组的6种方式总结
2021/11/17 PHP
python中使用redis用法详解
2022/12/24 Redis