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使用Flask框架获取用户IP地址的方法
Mar 21 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
浅谈Python的垃圾回收机制
Dec 17 Python
Python网络编程详解
Oct 31 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
python三大神器之fabric使用教程
Jun 10 Python
python实现车牌识别的示例代码
Aug 05 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
keras topN显示,自编写代码案例
Jul 03 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
python爬取2021猫眼票房字体加密实例
Feb 19 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 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
在Python中关于中文编码问题的处理建议
2015/04/08 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
招聘专员岗位职责
2014/03/07 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
化学教育专业自荐信
2014/07/04 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
如何做好工作总结!
2019/04/10 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
python中validators库的使用方法详解
2022/09/23 Python