Python爬虫与Mysql的连接

1、打开MySQL 8.0 Command Line Client终端

输入密码后创建数据库

create database Book charset=utf8;

Book为自定义数据库的名称

再输入use Book;进入数据库

创建表:

定义字段,设定字段的名称,类型及长度(长度够用即可)

2、python连接mysql

在py文件中定义如下,需要安装pymysql

在终端中进入相应地址使用清华源进行下载:pip intsall pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple

import pymysql

下载完之后有可能会出现import pymysql没问题,但是在终端运行时会出现ModuleNotFoundError: No module named 'pymysql'的错误

原因:找不到包,需要手动添加地址,找到pymysql安装的地址,在py文件中添加下列代码,其中的地址即为你的pymysql包安装的地址

import sys
sys.path.append(r'D:\E\Anaconda3\envs\spider\Lib\site-packages')

 然后定义数据库的相关参数进行连接,数据库的参数有很多,我使用的是下列6个,localhost即为本地服务器,不需要修改。port=3306为固定端口号,也不需要修改

host='localhost'
port=3306
user='用户名'
password='密码'
name='创建的数据库名称'
charset='utf8'
conn=pymysql.connect(
            host=host,
            port=port,
            user=user,
            password=password,
            db=name,
            charset=charset
        )

 定义mysql需要注入的语句book为表,参数有name,src,values即为对应值,通过循环即可将数据逐一保存

sql='insert into book(name,src) values("{}","{}")'.format(name_list[i],src_list[i])

 最后部分,即可将你的数据存入数据库中

conn.cursor.execute(sql)
conn.commit()#提交
conn.close()#最后关闭

 3查看

在mysql终端通过下列语句查看数据是否存入

select * from book;

附加:爬虫部分,简单步骤如下

使用requests模块

import requests
url='https://www.dushu.com/book/1085_1.html'
#请求头
headers={
     'User-Agent': '***'#通过网页源码查看
 }
response=requests.get(url=url,headers=headers)#获取响应
content=response.text#获取源码

from lxml import etree
tree=etree.HTML(content)
#使用xpath查找所需要的内容
name_list=tree.xpath('//div[@class="bookslist"]//img/@alt')
src_list=tree.xpath('//div[@class="bookslist"]//img/@data-original')

 上述得到的是图片的名称和地址

如果想要保存图片到本地,可以使用urllib模块

import urllib.request
for src,name in zip(src_list,name_list):
    src='https:'+src#查看url是否完整,若不完整再添加
    name='./文件夹名称/'+name+'.jpg'
    urllib.request.urlretrieve(url=src,filename=name)

完整代码:

import requests
url='https://www.dushu.com/book/1085_1.html'
#请求头
headers={
     'User-Agent': '***'通过源码查看请求头
 }
response=requests.get(url=url,headers=headers)#获取响应
content=response.text#获取源码
from lxml import etree
tree=etree.HTML(content)
#使用xpath查找所需要的内容
name_list=tree.xpath('//div[@class="bookslist"]//img/@alt')
src_list=tree.xpath('//div[@class="bookslist"]//img/@data-original')

import pymysql
#如果可以正常使用PyMySQL,即可不要添加下列代码
import sys
sys.path.append(r'D:\E\Anaconda3\envs\spider\Lib\site-packages')#地址修改成你自己的

host='localhost'
port=3306
user='用户名'
password='密码'
name='创建的数据库名称'
charset='utf8'

conn=pymysql.connect(
            host=host,
            port=port,
            user=user,
            password=password,
            db=name,
            charset=charset
        )
for i,src,name in zip(range(len(name_list)),src_list,name_list):
    print(i,name_list[i],src_list[i])
    sql='insert into book(name,src) values("{}","{}")'.format(name_list[i],src_list[i])
    conn.cursor().execute(sql)
    conn.commit()#提交


conn.close()#最后关闭

如何查看请求头:

打开网页,右键检查,CTRL+R,刷新页面,点击Network,一般第一个html就是当前页面

 往下滑最后一个即为User-Agent

注:第一次发blog,有什么错误的地方请见谅,希望对您有帮助

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值