python如何做一个数据库_MySQL数据库和Python怎么结合?

这次给大家带来的是将python爬取的数据写入数据库将爬取得数据写入数据库的步骤:

连接数据库;创建表将数据写入数据库;关闭数据库。连接数据库在连接自己的数据库之前我们应先导入importMySQLdb模块

host:自己的主机号,一般写127.0.0.1就可以了port:端口号user:rootpasswd:密码db:连接的数据库名称charset:编码

importMySQLdb

conn=MySQLdb.Connect(host='127.0.0.1',

port=3306,

user='root',

passwd='*******',

db='******',

charset='utf8')

2.创建表

cursor():使用该链接创建并返回的游标execute():执行一个数据库查询和命令commit():提交但前事物(写入数据时也会用到)

cur=conn.cursor()

sql="""CREATETABLExiaoshuo(

titleCHAR(20),

sec_titleCHAR(20),

contentVARCHAR(6499))"""

cur.execute(sql)

conn.commit()

3.写入数据库这里有两种方法写入:第一种:

into="INSERTINTOscrapy_yilong2(title,author,comment,`time`)VALUES(%s,%s,%s,%s)"

values=(item['title'],item['author'],item['comment'],item['time'])

cur.execute(into,values)

conn.commit()

第二种:

cur.execute("INSERTINTOscrapy_yilong2(title,author,comment,`time`)VALUES(%s,%s,%s,%s);%(item['title'],item['author'],item['comment'],item['time']))

conn.commit()

但是建议大家使用第一种,第一种比较规范还有就是,传入数据后记得提交,也就是commit()函数要记得写

4.关闭数据库

conn.close()

在这里,给大家一个完整的实例,以供大家体会,下面这个例子是爬取多本小说,并写入数据库如果大家想更加的了解这个代码,可以查看我的上一篇博客上一篇:爬取多本小说并写入多个txt文档

#-*-coding:utf-8-*-

frombs4importBeautifulSoup

importrequests

importre

importMySQLdb

#解决出现的写入错误

importsys

reload(sys)

sys.setdefaultencoding('utf-8')

#可以获取多本文章

MAX_RETRIES=20

url='http://eutils.ncbi.nlm.nih.gov/entrez/eutils/einfo.fcgi'

session=requests.Session()

adapter=requests.adapters.HTTPAdapter(max_retries=MAX_RETRIES)

session.mount('https://',adapter)

session.mount('http://',adapter)

r=session.get(url)

print('连接到mysql服务器...')

conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='123mysql',db='onefive',charset='utf8')

print('连接上了!')

cur=conn.cursor()

#判断表是否存在,若存在则删除此表

cur.execute("DROPTABLEIFEXISTSAGENT")

#创建表

sql="""CREATETABLExiaoshuo(

titleCHAR(20),

sec_titleCHAR(20),

contentVARCHAR(6499))"""

cur.execute(sql)

conn.commit()

#爬取首页各小说链接,并写入列表

url1='http://www.biquge.com.tw/'

html=requests.get(url1).content

soup=BeautifulSoup(html,'html.parser')

article=soup.find(id="main")

texts=[]

fornovelinarticle.find_all(href=re.compile('http://www.biquge.com.tw/')):

#小说链接

nt=novel.get('href')

texts.append(nt)

#printnt#可供检验

new_text=[]

fortextintexts:

iftextnotinnew_text:

new_text.append(text)

#将刚刚的列表写入一个新列表,以供遍历,获取各个链接

h=[]

h.append(new_text)

l=0

forninh:

whilel<=len(n)-1:

#爬取小说的相关信息及目录和目录链接

url2=n[l]

html=requests.get(url2).content

soup=BeautifulSoup(html,'html.parser')

a=[]

#爬取相关信息及目录

forcatalogueinsoup.find_all(id="list"):

timu=soup.find(id="maininfo")

name1=timu.find('h1').get_text()

tm=timu.get_text()

e_cat=catalogue.get_text('')

printname1

#printtm

#printe_cat

end1=u'%s%s%s%s'%(tm,'',e_cat,'')

cur.execute("INSERTINTOxiaoshuo(title)VALUES('%s');"%(name1))

conn.commit()

#爬取各章链接

forlinkincatalogue.find_all(href=re.compile(".html")):

lianjie='http://www.biquge.com.tw/'+link.get('href')

a.append(lianjie)

#将各章的链接列表写入一个新列表,以供遍历,获取各章的列表

k=[]

k.append(a)

j=0

foriink:

whilej<=len(i)-1:

#爬取各章小说内容

url='http://www.biquge.com.tw/14_14055/9194140.html'

finallyurl=i[j]

html=requests.get(finallyurl).content

soup=BeautifulSoup(html,'html.parser')

tit=soup.find('div',attrs={'class':'bookname'})

title=tit.h1

content=soup.find(id='content').get_text()

section=title.get_text()

printsection

printcontent

j+=1

#end2=u'%s%s%s%s'%(title,'',content,'')

cur.execute("INSERTINTOxiaoshuo(sec_title,content)VALUES('%s','%s');"%(section,content))

conn.commit()

l+=1

conn.close()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值