windows下爬虫+数据库(非关系数据库/关系数据库)的实现简介2-MYSQL

二.mysql篇
1.准备:
1.1.下载mysql(注意根据自己的电脑软件位数选则,我的是32位的)
1.2根据自己的情况设置自己的mysql密码
1.3测试自己的mysql是否安装成功,在命令提示行输入命令

mysql -u root -p

然后输入上一步设置的密码,如果成功结果如下图
在这里插入图片描述
1.4.了解基本的SQL语法,可以对数据库进行简单的操作。
2.python操作mysql
连接mysql可以用的模块有mysqldb和pymysql,由于电脑限制此处选择pymysql,对mysqldb感兴趣的可以自行研究
2.1.安装pymysql:在命令提示行进行安装 输入命令

pip install pymysql

2.2连接mysql
2.2.1.先在命令提示行打开的mysql客户端中创建一个数据库(test),SQL语句如下:

create database test character set gbk

2.2.2.在pycharm中连接mysql

import pymysql
conn=pymysql.connect(
    host='127.0.0.1',
    user='root',
    passwd='Jliming0521@',
    port=3306,
    db='test',
    charset='utf8'
)

接下来对mysql进行操作(会用到SQL语句对数据库进行操作)
具体操作如下:

# 因为查询要用到游标,此处创建游标对象
cursor=conn.cursor()
#注意此处字段的大小要设置合适(例:title设为varchar(1000)),否正会报错,
cursor.execute('create table work2(id int  auto_increment primary key,title varchar(1000),salary varchar(30) )')
data2="'qiye','22'"
cursor.execute('insert into work2(title,salary) values (%s)'%data2)
conn.commit()
conn.close()

知识点:1.上例中data2中数据一定要加引号,不然会报错

pymysql.err.OperationalError: (1054, “Unknown column ‘qiye’ in ‘field list’”)

2.一定要加

conn.commit()

否则数据不会写入数据库。

3.结合以上内容,和上一节爬虫相关内容,可以实现爬虫与关系型数据库MySQL的结合,具体代码如下(可直接测试,有问题可以留言交流)

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import csv
import redis
# import mysqldb
import pymysql

driver=webdriver.Chrome()
# 连接redis
# pool=redis.ConnectionPool(host='127.0.0.1',port=6379)
# r=redis.Redis(connection_pool=pool)

# 连接mysql
conn=pymysql.connect(
    host='127.0.0.1',
    user='root',
    passwd='Jliming0521@',
    port=3306,
    db='test',
    charset='utf8'
)
# 因为查询要用到游标,此处创建游标对象
cursor=conn.cursor()
# cursor.execute('create database test character set gbk')
cursor.execute('create table work3(id int  auto_increment primary key,title varchar(1000),salary varchar(30) )')

for i in range(2,3):
    # 打开网页
    driver.get('https://www.liepin.com/zhaopin/?headId=a1e957264a1bd4dbe63ba17ab9e4e027&ckId=nrl2k9somybevobeexmuqoerjlj2sm78&oldCkId=a1e957264a1bd4dbe63ba17ab9e4e027&fkId=rnc274jfpr7oqs59z33zmbo0l8a2npkb&skId=rnc274jfpr7oqs59z33zmbo0l8a2npkb&sfrom=search_job_pc&key=运维工程师&currentPage={}&scene=page'.format(i))
    cookie={
        'name':'foo',
        'value': 'bar',

    }
    driver.add_cookie(cookie)

    # driver.quit()
    # 隐式等待 等页面数据加载完之后再进行接下来的操作
    driver.implicitly_wait(60)
    lists = driver.find_element_by_xpath('/html/body/div[1]/div/section[1]/div/ul')
    titles = lists.find_elements_by_xpath('./li/div/div/div[1]/div/a[1]/div[1]/div/div[1]')
    salarys = lists.find_elements_by_xpath('./li/div/div/div[1]/div/a[1]/div[1]/span')

    for n in range(0,len(titles)):
#     写入mysql语句
        data="'{0}','{1}'".format(titles[n].text,salarys[n].text)
        cursor.execute('insert into work2(title,salary) values (%s)'%data)
         #也可以用下面这种方式写入数据,和上面效果一样
        # cursor.execute('insert into work2(title,salary) values (%s,%s)', (titles[n].text, salarys[n].text))

        conn.commit()

conn.close()
driver.quit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值