本周开始熟悉python对mysql的一些基本操作,我们在这个网站(http://www.zgsj.com/domain_reg/)搜索5~6位长度并以.com为后缀的英文单词域名,将这些单词放入数据库中。那么首先我们要下载和安装mysql,这里我用的是5.6.17版本的mysql+Navicat for MySQL,Navicat for MySQL是一套专为MySQL设计的强大数据库管理及开发工具,对于新用户也易于学习,至少比起操作命令行界面简单了不少。mysql安装完了之后我们python该如何调用呢?此时还需要安装MySQLdb,MySQLdb是用于Python链接Mysql数据库的接口。
(安装MySQLdb,请访问 http://sourceforge.net/projects/mysql-python)
安装好了
MySQLdb并将其移动到site-packages里面,我们在程序便可以调用了。
1.与数据库建立连接
import MySQLdb
try:
cxn = MySQLdb.connect(host='localhost', user='root', passwd='root', db='python')
except:
print "Could not connect to MySQL server."
exit( 0 )
其中host里面填写数据库主机名.默认是用本地主机.
user里面填写数据库登陆名.默认是当前用户.
passwd里面填写数据库登陆的秘密.默认为空.
db里面填写要使用的数据库名.没有默认值.
与数据库连接后,使用cursor()方法获取操作游标
cursor = db.cursor()
2.创建数据库表
<span style="font-size:18px;">cur.execute('CREATE TABLE results(site VARCHAR(8),suffix VARCHAR(8))')</span>
其中results是创建的表的名称,site和suffix是表中存放的参数,这里用于存放英文字符串和.com后缀,VARCHAR(8)是参数类型,可以保存可变长度的字符串。其中8代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中.可选参数类型有CHAR、INT等等。这样我们便创建了一个名为results的表。
3.数据库插入操作
<span style="font-size:18px;">values = [x,suffix]
cur.execute("INSERT INTO results VALUES(%s, %s)" ,values) #向数据库传入需要的值
cxn.commit() #向数据库提交数据</span>
这里,我们将符合要求的网址存放到results这个数据库中,其中cxn.commit()为提交操作,少了这一步,数据库中的参数值将永远为NULL。我就是少写了这一步导致结果一直为NULL,检查半天才把问题找出来- -.这样我们就把我们要的结果存放到了数据库中.下面附上我程序运行的存放到数据库中的结果图:
由于字符串太多,程序运行了半个多小时才筛选出将近1700条的结果- - ,于是我暂停了程序!
这是我程序的完整代码:
#__author__ = 'author'
# coding:utf-8
import urllib
import urllib2
import requests
import re
import MySQLdb
#用requests的方法获取html
def GetHtml(url,data):
html = requests.post(url,data)
return html
#获取提交表单得到的value值
def Get_Value(html):
req = '<tr height=.*?value=\'(.*?)\' />'
valuelist = re.compile(req).findall(html)
for value in valuelist:
return value
#获取所有5位字母的字符串
def Get_all_str():
a = []
for i in range(97,123):
for k in range(97,123):
for y in range(97,123):
for x in range(97,123):
for m in range(97,123):
a.append(chr(i)+chr(k)+chr(y)+chr(x)+chr(m))
return a
#筛选所有可用的域名
def Do_screen(url):
a = Get_all_str()
print '*** Connecting to database'
try:
#建立与数据库的连接
cxn = MySQLdb.connect(host='localhost', user='root', passwd='root', db='python')
except:
print "Could not connect to MySQL server."
exit( 0 )
cur=cxn.cursor() # 使用cursor()方法获取操作游标
print '*** Creating results table'
cur.execute('CREATE TABLE results(site VARCHAR(8),suffix VARCHAR(8))') #创建一个results数据库表
for x in a:
suffix = '.com'
data = {'d_name':x+suffix,'dtype':'common'}
html = GetHtml(url,data)
value = Get_Value(html.content)
print x,value
if(value == 'no'): #value为no即为可用域名
values = [x,suffix]
cur.execute("INSERT INTO results VALUES(%s, %s)" ,values) #向数据库传入需要的值
cxn.commit() #向数据库提交数据
print '可用域名:'+x+'.com'
cxn.close() # 关闭数据库连接
url = 'http://www.zgsj.com/domain_reg/domaintrans.asp'
Do_screen(url)
本文介绍如何使用Python进行MySQL的基本操作,包括安装MySQLdb模块、连接数据库、创建表及插入数据等,并通过实例演示如何从特定网站抓取数据并存储到数据库。

被折叠的 条评论
为什么被折叠?



