今天,我跟大家分享一波从爬取数据到mysql的数据存储。这次,我选择的案例网址是:https://news.sina.com.cn/(新浪新闻),我截取新闻其中一个小部分来爬取,来简单阐述怎么将爬取的数据存储到数据库中。
这是要爬取的内容,我只爬取标题和标题对应的链接。完整代码如下:
#encoding='utf-8'
#Author:Mr.Pan_学狂
#datetime:2020/10/30 1:44
#finish time:2020/10/30 1:44
from selenium import webdriver
from lxml import etree
import pymysql
import random
import time
def spyder():
options = webdriver.ChromeOptions()#配置谷歌浏览器的配置
options.add_argument('--headless')#开启无界面浏览模式
options.add_argument('--disable-gpu')#关闭gpu,不显示。
driver = webdriver.Chrome(options=options)#导入之前的配置
url = 'https://news.sina.com.cn/'#案例网址
driver.get(url)#发送get请求
driver.implicitly_wait(random.randint(3,5))#随机等待网页响应
# div_content = driver.find_element_by_xpath('//*[@id="blk_gnxw_011"]').text
# print(div_content)
for i in range(1,14):
xpath_road = '//*[@id="blk_gnxw_011"]/li['+str(i)+']'#构造xpath路径
xpath_road2 = xpath_road + '/a'
content = driver.find_element_by_xpath(xpath_road).text#获取标题
href = driver.find_element_by_xpath(xpath_road2).get_attribute('href')#获取标题的链接
print(content+'链接是:')#打印输出
print(href)
title = "'" + content + "'"#引号嵌套
Href = "'" + href + "'"#引号嵌套
sql = "insert into data(标题,链接)values(" + title + ',' + Href + ");"#构造sql语句
connect()#连接数据库,嵌套函数
insert_or_update(sql)#插入数据
time.sleep(random.randrange(2,6))#睡眠
def connect():#定义数据库连接
return pymysql.connect(
host='127.0.0.1',#主机号
user='root',#用户
password='123456',#数据库密码
database='news',#数据库名
port=3306,#端口号
charset='utf8'#字符集
)
def insert_or_update(sql):#定义数据库插入
con = connect()#开启连接
cursor = con.cursor()#获取游标
cursor.execute(sql)#执行sql语句
con.commit()#确认操作
cursor.close()#关闭游标
con.close()#关闭连接
if __name__=='__main__':#主函数,程序出口,执行函数。
spyder()
对应的在MySQL数据库中执行的代码如下:
创建了名为news的数据库。
创建了名为data的表,里面有两个字段名,一个是标题,另一个是链接,并赋给数据存储的长度。
注意!!打开MySQL的服务,如下图:
最后,运行代码,结果如下图:
数据库中表data,打开如下图:
提示,若是数据库中没有数据库news,请先关闭连接,再打开即可刷新数据库。
使用SQL语句查询结果,如下图:
最后,感谢大家前来观看鄙人的文章,不胜感激,文中或有诸多不妥之处,还望指出和海涵。