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之日期与时间处理模块(date和datetime)
Feb 16 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
如何在Django项目中引入静态文件
Jul 26 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
python 实现单例模式的5种方法
Sep 23 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
python 实时调取摄像头的示例代码
Nov 25 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
消息持续发送的完整例子
2006/10/09 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
JS实现吸顶特效
2020/01/08 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
详解使用python crontab设置linux定时任务
2016/12/08 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python生成随机图形验证码详解
2017/11/08 Python
python Celery定时任务的示例
2018/03/13 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python发送邮件实现基础解析
2020/08/14 Python
python 两种方法删除空文件夹
2020/09/29 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
华三通信H3C面试题
2015/05/15 面试题
秋季运动会广播稿
2014/02/22 职场文书
合伙经营协议书范本
2014/04/18 职场文书
九年级历史教学反思
2016/02/19 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
详解Flask开发技巧之异常处理
2021/06/15 Python