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中正则表达式的详细教程
Apr 30 Python
python字符串连接方法分析
Apr 12 Python
Python对象与引用的介绍
Jan 24 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
Flask之pipenv虚拟环境的实现
Nov 26 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
python支持多继承吗
Jun 19 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 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 new static 和 new self详解
2017/02/19 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
php的扩展写法总结
2019/05/14 PHP
js对象与打印对象分析比较
2013/04/23 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
python 随机数生成的代码的详细分析
2011/05/15 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python实现的汉诺塔算法示例
2019/10/23 Python
NumPy排序的实现
2020/01/21 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
会计实习生自我鉴定
2013/12/12 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js