用 Python selenium爬取股票新闻并存入mysql数据库中带翻页功能demo可下载
用 Python selenium爬取实时股票新闻并存入mysql数据库中
- 1.分析需求
- 2.创建表
- 3.分析需要爬取的网页内容
- 4.python里面selenium进行爬虫操作
- 1.添加包
- 2.连接数据库
- 3.selenium爬虫前配置
- 4.对股票新闻内容爬取并存入mysql中
- 5.翻页功能
- 6.运行程序
首先我们先明确我们的主要目标就是要爬取网站的股票新闻,并将爬取到的内容存入到mysql里面去具体流程就如下图所示
如果需要完整的代码可以直接到这些下载,觉得文章不错的话欢迎点赞,收藏,打赏
Python爬取股票新闻并存入mysql数据库
1.分析需求
我们主要就是针对于7x24小时股票新闻的新闻进行爬取,里面的新闻内容较多,由于我们需要存入mysql数据库里面所以我们先搞定数据库先,当然csv格式进行存储也是可以,不过由于我需要在我自己的django项目中显示出来需要就需要用到mysql数据库
2.创建表
首先我们需要爬取的主要内容有三个,第一个就是新闻时间,第二个就是新闻的网页地址,第三个就是新闻的内容所以我们的表就创建三个即可,如果你自己想要创建更多复杂的内容的话就可以自己新增字段然后再爬取进去也是可以的
CREATE TABLE abc
(
id
int NOT NULL AUTO_INCREMENT,
new_time
datetime(6) NOT NULL,#新闻时间
new_sources
varchar(100) NOT NULL,#新闻的网页地址
new_content
varchar(500) NOT NULL,#新闻的内容
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=263 DEFAULT CHARSET=utf8mb3;
3.分析需要爬取的网页内容
首先找到开发人员工具选项或者右键审查元素也可以这里根据你用的浏览器灵活进行更改
然后再用这个小箭头点击你要审查的元素,点击新闻内容就可以显示里面的元素
找到我们需要的新闻内容
再点击外框可以发现我们所有需要的内容都是在livenews-media这个标签里面
再点进去我们可以看到time就是我们想要的新闻时间不过这个时间只是一个小时和分时,我们需要带年月日不然后期数据存入数据库里面会非常乱,这里就要改。
再从media-title-box font_0点进去我们可以看到一个href后带有超链接和a标签里面有我们需要的新闻内容
目前为止我们就可以大致梳理清楚我们要爬取的内容就是time标签内的内容,a标签内href里面的超链接,a标签里面的新闻内容。
4.python里面selenium进行爬虫操作
1.添加包
这里面我们需要time包用来将时间更改存入mysql中,pymysql进行Python和mysql的连接,selenium进行内容爬取
import time
import pymysql
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from apscheduler.schedulers.blocking import BlockingScheduler
from selenium.webdriver import Chrome, ChromeOptions
2.连接数据库
# //连接数据库
conn = pymysql.connect(host='localhost', # host属性port=3306, # 端口号user='', # 用户名pasrd='', # 此处填登录数据库的密码(由于无法在文章内显示密码为英文的密码单词,请自行修改)db='' , # 数据库名charset='utf8')
3.selenium爬虫前配置
如果不了解selenium可以去看这一篇文章
selenium用法详解【从入门到实战】【Python爬虫】【4万字】
由于我本人不需要selenium去进行爬虫界面显示,所以将爬虫界面给关闭,如果你需要看爬虫在浏览器内干的活那么你就需要把opt这两段注释掉即可,这里我用的Chrome浏览器的内核
opt = ChromeOptions() # 创建Chrome参数对象
opt.headless = True # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
# Chrome浏览器
driver = webdriver.Chrome()
driver.get("")#爬取的网页地址
4.对股票新闻内容爬取并存入mysql中
def index():# 设置等待5秒,避免爬虫时被封禁driver.implicitly_wait(5)# 找到外框的获取里面所有的li标签lis = driver.find_elements_by_xpath("//*[@class='livenews-media']")for i,li in enumerate(lis):# debug后发现lis里面len获取最大值是50,所以直接for循环给他控制在50次就退出操作if i < 50:# 获取urlline = li.find_element_by_css_selector("a.media-title").get_attribute('href')# 获取时间,第一次获取text内容实用get_attribute发现获取的内容是空值,所以改用.text获取到值# time24 = li.find_element_by_css_selector('span.time').get_attribute('text')time24 = li.find_element_by_css_selector('span.time').text# 获取本地时间b = time.strftime('%Y-%m-%d ', time.localtime(time.time()))# 与获取到的时间进行拼接获取可以进入数据库里面时间格式d = b + time24newtext = li.find_element_by_css_selector("a.media-title").get_attribute('text')print(d,line,newtext)# 获取一个光标cursor = conn.cursor()# 插入数据,insert into mysql表名(列名,列名,列名)values(值,值,值)这个值主要就是对应的你获取到的值sql = 'insert into abc(new_time,new_sources,new_content) values(%s,%s,%s);'# 对获取到的数据进行排序如果有重复的则进行筛除data_list=[d,line,newtext]list2 = sorted(list(set(data_list)), key=data_list.index)try:# 插入数据cursor.execute(sql,list2)# 连接数据conn.commit()print('插入数据成功')except Exception as e:print('插入数据失败')conn.rollback()time.sleep(5)else:driver.quit()# 关闭数据库conn.close()
5.翻页功能
如果有些网站可以对li标签内进行点击翻页那就不用模拟键盘翻页操作,这里range()里面的内容就代表页数可自行修改
# 翻页功能,selenium模拟键盘自动翻页
for j in range(1):index()driver.implicitly_wait(5)# driver.switch_to.window(driver.window_handles[-1])#页面点击跳转下一页,因为无法识别到li里面的标签所以就用键盘右键换页的方法替代ActionChains(driver).key_down(Keys.CONTROL).send_keys(Keys.RIGHT).key_up(Keys.CONTROL).perform()time.sleep(5)
还有就是翻页之后由于selenium无法识别新的页面就需要告知selenium当前页面为新页面,需要用以下代码
driver.switch_to.window(driver.window_handles[-1])
如果翻页之后没有出现新的窗口那就不需要对新的窗口进行关闭,如果翻页之后出现新的窗口就需要对新的窗口进行关闭操作也就是driver.close()
6.运行程序
成功将内容插入到mysql数据库当中
用 Python selenium爬取股票新闻并存入mysql数据库中带翻页功能demo可下载相关推荐
- python爬取 xueqiu网 数据 存入MySQL数据库中
#导入包 from urllib import request import json import pymysql #声名一个class类 class mysql_connect(object):# ...
- 爬取新笔趣阁排行并保存到mysql_python+selenium爬取微博热搜存入Mysql的实现方法...
最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站link 下面我们来分析怎么实现 使用的库 import requests from selenium.webdr ...
- python,selenium爬取微博热搜存入Mysql
python爬取微博热搜存入Mysql 最终的效果 使用的库 目标分析 一:得到数据 二:链接数据库 总代码 最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站li ...
- 在ubuntu 16.04里使用python—scrapy将爬取到的数据存到mysql数据库中的一些随笔
一.将爬取的数据保存到mysql数据库的代码(已经能将爬取的数据保存到json文件) (1)编辑Pipeline.py文件 (2)编辑settings.py文件 二.将数据保存至mysql数据库出现的 ...
- [python爬虫] Selenium爬取内容并存储至MySQL数据库
前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的.这篇文章主要讲述通过Selenium ...
- Selenium驱动firefox爬取今日头条并存放在MySQL数据库中
Selenium驱动firefox爬取今日头条 前提: 1.安装selenium包:pip install selenium 2.安装MySQL数据库,并下载Navicat可视化工具 Navicat可 ...
- Python单线程爬取QQ空间说说存入MySQL并生成词云(超详细讲解,踩坑经历)
利用python爬取好友说说并分析 看了网上的许多博客,基本上都是一个样,基本的知识也没详细解释,我这次也想跟大家仔细分析一下,自己还是要有一定爬虫基础,本人技术有限,如果本文哪有错误或不够准确的地方 ...
- python爬虫之爬取掘金网首页存入mysql数据库
博主是个前端小白,最近在学习爬虫,写个实战系列也是想记录自己学习的过程,以便后续回顾 欢迎大家一起交流学习.共同进步 这篇文章达成的效果是爬掘金网的首页的数据存到mysql数据库里 做这个实战你需要具 ...
- python爬虫下载电影百度文档_写一个python 爬虫爬取百度电影并存入mysql中
目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...
最新文章
- 打算看的书或正在看的书
- Oracle 小知识点
- 数组-两个数组的交集(两个集合)
- MER: 基于ITS区域marker扩增真菌群落的准确性
- Java JSON 之 Xml 转 JSON 字符串
- html5日期不联动下拉框,下拉框联动问题 赋值时候失效
- Python正则简单实例分析
- contiki源码阅读之mmem.c
- iOS技术周报-第28期
- 静态方法和实例方法(mark)
- button点击后出现的边框_用Tkinter制作Python程序的图形用户界面(GUI),打包后比Qt5减少60M(77.5%)(实例63)...
- Qt编程之mapx组件编程
- php把amr转换成mp3,PHP 将amr音频文件转换为mp3格式
- CCSP认证考试大纲 2022版
- 初谈黑客破解密码的原理
- 频繁出现域名无法解析该如何处理
- Hive中的map join、left semi join和sort merge bucket join
- outlook邮件撤回方法
- Python实现点阵字体读取与转换
- 为保证系统的可用性的事前事中事后