Python爬取金山词霸每日一句,存储到MySQL中
先附上源码
import json
import requests
import pymysql
host = 'localhost'
port = 3306
user = 'root'
passwd = '213113'
dbme = 'information_storage'
table = 'iciba_daily_sentence'
conn = pymysql.connect(host=host, user=user, passwd=passwd, db=dbme, port=port, charset="utf8")
cur = conn.cursor()
data = requests.get("http://open.iciba.com/dsapi/").text
jdata = json.loads(data)
dateline = jdata.get("dateline")
caption = jdata.get("caption")
content = jdata.get("content")
fenxiang_img = jdata.get("fenxiang_img")
note = jdata.get("note")
picture = jdata.get("picture")
picture2 = jdata.get("picture2")
translation = jdata.get("translation")
tts = jdata.get("tts")
sql = 'insert into %s (dateline,caption,content,fenxiang_img,note,picture,picture2,translation,tts) ' \
'values ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s","%s")' \
% (table, dateline, caption, content, fenxiang_img, note, picture, picture2, translation, tts)
print(sql)
try:
cur.execute(sql)
except:
print("error")
print(json.dumps(jdata, ensure_ascii=False))
conn.commit()
conn.close()
数据库源码
CREATE TABLE `iciba_daily_sentence` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`dateline` char(10) DEFAULT NULL,
`caption` varchar(20) DEFAULT NULL,
`content` varchar(255) DEFAULT NULL,
`fenxiang_img` varchar(255) DEFAULT NULL,
`note` varchar(255) DEFAULT NULL,
`picture` varchar(255) DEFAULT NULL,
`picture2` varchar(255) DEFAULT NULL,
`translation` varchar(255) DEFAULT NULL,
`tts` varchar(255) DEFAULT NULL,
`gmt_create` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_dateline` (`dateline`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
接下来就是用pycharm运行代码
- 将python代码粘贴到pycharm中,第二三行会有红线报错,是没有导入相应的包
- 打开控制台,输入
pip install requests
,pip install pymysql
,回车 - 打开navicat,当然也可以用其他数据库管理工具,比如sqlyog
新建数据库取名为information_storage,字符集设为utf8,新建查询,将上面的代码粘贴进去,点击运行
- 然后去pycharm中连接数据库
- 填写信息,测试连接
- 记得程序中的数据库的用户名和密码改成自己的
- 运行代码,可以看到数据库中已经有了一条记录,说明成功!!