python 爬取古诗文存入mysql数据库的方法


Posted in Python onJanuary 08, 2020

使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column ‘title' in ‘field list'。原来是我写sql 有问题,sql = “insert into poem(title,author,content,create_time) values({},{},{},{})”.format(title, author,content,crate_time)
应该写成sql = “insert into poem(title,author,content,create_time) values('{}','{}','{}','{}')”.format(title, author,content,crate_time)

把插入的值放入引号中。

import datetime
import re
import pymysql
import requests
url = "https://www.gushiwen.org/"
headers = {
 'User-Agent': "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}
class Spiderpoem(object):
 conn = pymysql.Connect(host="localhost", port=3306, user="root", password='mysql', database='poem_data',
       charset="utf8")
 cs1 = conn.cursor()
 def get_requests(self, url, headers=None):
  """发送请求"""
  resp = requests.get(url, headers=headers)
  if resp.status_code == 200:
   # print(resp.request.headers)
   return resp.text
  return None
 def get_parse(self, response):
  """解析网页"""
  re_data = {
   "title": r'<div\sclass="sons">.*?<b>(.*?)</b>.*?</div>',
   "author": r'<p>.*?class="source">.*?<a.*?>(.*?)</a>.*?<a.*?>(.*?)</a>.*?</p>',
   "content": r'<div\sclass="contson".*?>(.*?)</div>'
  }
  titles = self.reg_con(re_data["title"], response)
  authors = self.reg_con(re_data["author"], response)
  poems_list = self.reg_con(re_data["content"], response)
  contents = list()
  for item in poems_list:
   ite = re.sub(r'<.*?>|\s', "", item)
   contents.append(ite.strip())
  for value in zip(titles, authors, contents):
   title, author, content = value
   author = "".join([author[0], '.', author[1]])
   poem = {
    "title": title,
    "author": author,
    "content": content
   }
   yield poem
 def reg_con(self, params, response):
  """正则匹配"""
  if not response:
   return "请求错误"
  param = re.compile(params, re.DOTALL) # re.DOTALL 匹配换行等价于re.S
  result = re.findall(param, response)
  return result
 @classmethod
 def save_data(cls, poem):
  title = poem.get("title")
  author = poem.get("author")
  content = poem.get("content")
  crate_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  sql = "insert into poem(title,author,content,create_time) values('{}','{}','{}','{}')".format(title, author,
                          content,
                          crate_time)
  count = cls.cs1.execute(sql)
  print(count)
  cls.conn.commit()
 def main(self):
  resp = self.get_requests(url, headers)
  for it in self.get_parse(resp):
   self.save_data(it)
  self.cs1.close()
  self.conn.close()
if __name__ == '__main__':
 Spiderpoem().main()

总结

以上所述是小编给大家介绍的python 爬取古诗文存入mysql数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
python基础教程项目四之新闻聚合
Apr 02 Python
python使用tornado实现简单爬虫
Jul 28 Python
python tornado微信开发入门代码
Aug 24 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
Python实战购物车项目的实现参考
Feb 20 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
python+OpenCV实现图像拼接
Mar 05 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
Apr 20 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
基于python3抓取pinpoint应用信息入库
Jan 08 #Python
Python PyInstaller安装和使用教程详解
Jan 08 #Python
关于Pytorch的MLP模块实现方式
Jan 07 #Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 #Python
Pytorch中膨胀卷积的用法详解
Jan 07 #Python
Python urlopen()和urlretrieve()用法解析
Jan 07 #Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 #Python
You might like
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JS代码放在head和body中的区别分析
2011/12/01 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
如何填写个人简历自我评价
2013/12/10 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
汽车维修求职信
2014/06/15 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
常住证明范本
2015/06/23 职场文书
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
vue elementUI表格控制对应列
2022/04/13 Vue.js