一篇文章让你轻松学会python爬取的数据保存到MySQL中,有案例哦

文章目录

  • pymysql 基本使用 八个步骤以及案例分析
    • 一.导入pymysql模块
    • 二.获取到database的链接对象
    • 三.创建数据表的方法
    • 四.获取执行sql语句的光标对象
    • 五.定义要执行的sql语句
      • 1.sql的增加数据的方法
      • 2.sql的删除数据的方法
      • 3.sql的修改数据方法
      • 4.sql的查询方法
    • 六.通过光标对象执行sql语句
      • 1.执行增加数据的sql语句
      • 2.执行删除数据sql语句
      • 3.执行修改数据的sql语句
      • 4.执行查询数据的sql语句
    • 七.关闭光标对象
    • 八.关闭数据库的链接对象
  • 九.洛克王国宠物数据抓取案例
  • 十.总结

pymysql 基本使用 八个步骤以及案例分析

一.导入pymysql模块

   导入pymysql之前需要先安装pymysql模块
   		方法一:直接在pycharm编译器里面输入	pip install pymysql
   		
   		方法二:win+r --> 输入cmd -->在里面输入pip install pymysql
   		
   	ps:在cmd中输入pip list后回车 可以找到安装的pymysql就表示安装成功了
在pycharm编译器中导入
	import pymysql

二.获取到database的链接对象

coon = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql_test')
user:是你的数据库用户名
password:数据库密码
database:你已经创建好的数据库

三.创建数据表的方法

cursor.execute(
'''create table if not exists pets(id int primary key  auto_increment,
   src varchar(50),
   skill varchar(100)''')

四.获取执行sql语句的光标对象

cousor = coon.cousor()

五.定义要执行的sql语句

1.sql的增加数据的方法

sql = '''insert into test_mysql(id,src,skill) values(%d,%s,%s)'''
	ps: test_mysql 是你连接到的数据库中的一张表
		id,src,skill 这个是你创建表时所定义的字段关键字
		%d,%s,%s 这个要根据你创建的字段关键字的类型而定,记住要一一对应

2.sql的删除数据的方法

sql_1 = '''delete from test_mysql where src=%s;'''

3.sql的修改数据方法

sql_2 = '''update test_mysql set src=%s where skill=%s;'

4.sql的查询方法

sql_3 = '''select * from test_mysql where skill = %s'''

六.通过光标对象执行sql语句

1.执行增加数据的sql语句

cousor.execute(sql, [2, 'www.sohu.com', '000000'])
	运行后在mysql的可视化后台就可以直观的添加的数据

2.执行删除数据sql语句

 new = 'www.baidu.com'
 cousor.execute(sql_1, [new])
 	PS:这里就是根据sql语句where后面的条件进行删除对应的数据
 	要记住传入的数据要与sql的where后面条件匹配

3.执行修改数据的sql语句

url = 'www.baidu.com'
pwd = '666666'
cousor.execute(sql_2,[pwd,url])

4.执行查询数据的sql语句

result1 = cousor.fetchone() 
	fetchone() 查询=整个表中的第一条数据,
	如果再次使用就会查找到第二条数据,
	还可以在括号内输入id值查询到相应的数据
	
result2 = cousor.fetchmany() 
	fetchmany()查询到表里的多条数据,
	在括号里输入几就会查找到表的前几条数据
	
result2 = cousor.fetchall() 
 	fetchall()查询到sql查询匹配到的所有数据
 	
print(result)print输出语句就能直接打印输出所查询到的数据
	
	**总结: 在执行sql语句要传入参数时,这个参数要以列表或者元组的类型传入**

七.关闭光标对象

cousor.close()

八.关闭数据库的链接对象

coon.cousor()

九.洛克王国宠物数据抓取案例

import requests
import pymysql
from lxml import etree
from time import sleep

# 数据库链接
conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql')
cursor = conn.cursor()
# 执行一条创建表的操作
cursor.execute(
    '''create table if not exists pets(id int primary key  auto_increment,name varchar(50),src varchar(100),industry text)''')

url = 'http://news.4399.com/luoke/luokechongwu/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}

response = requests.get(url=url, headers=headers)
response.encoding = 'gbk'

html = response.text
# print(html)

# 宠物名称
# 宠物图片(图片在 lz_src)
# 宠物技能(跳转详细页)

tree = etree.HTML(html)

li_list = tree.xpath('//ul[@id="cwdz_list"]/li')  # 所有的宠物
for li in li_list:
    name = li.xpath('./@name')[0]  # 每一个宠物的名称
    src = 'http:' + li.xpath('./a/img/@lz_src')[0]  # 图片链接
    link = 'http://news.4399.com' + li.xpath('./a/@href')[0]  # 宠物的详细链接
    industry = []  # 数组里面存放每一个对象,每一个对象就是一个技能

    # 对详细链接发起请求,获取技能
    try:
        detail_resp = requests.get(url=link, headers=headers)
        sleep(0.5)
        detail_resp.encoding = 'gbk'
        detail_tree = etree.HTML(detail_resp.text)

        # 技能
        skills = detail_tree.xpath('/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/table[4]/tbody/tr')
        del skills[0]
        del skills[0]

        for skill in skills:
            item = {}
            item['name'] = skill.xpath('./td[1]/text()')[0]  # 技能
            item['grade'] = skill.xpath('./td[2]/text()')[0]  # 等级
            item['property'] = skill.xpath('./td[3]/text()')[0]  # 属性
            item['type'] = skill.xpath('./td[4]/text()')[0]  # 类型
            item['target'] = skill.xpath('./td[5]/text()')[0]  # 目标
            item['power'] = skill.xpath('./td[6]/text()')[0]  # 威力
            item['pp'] = skill.xpath('./td[7]/text()')[0]  # pp
            item['result'] = skill.xpath('./td[8]/text()')[0]  # 效果
            industry.append(item)
        # print(industry)

        # 数据保存 (mysql)
        sql = '''insert into pets(name,src,industry) values (%s,%s,%s);'''
        cursor.execute(sql, [name, src, str(industry)])
        conn.commit()
        print(f'{name}--保存成功!')
    except Exception as e:
        pass
cursor.close()
conn.close()

十.总结

 本章内容主要是给大家讲解一下在爬虫过程中如何将数据保存mysql数据库中去,
 最后面这个案例就是一个示范,希望这篇文章能给大家带来帮助,都看到这里了给
 个三连支持一下吧!!!

你可能感兴趣的:(爬虫,mysql,python,数据库,pycharm)