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 相关文章推荐
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
Python用input输入列表的实例代码
Feb 07 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
浅谈Python线程的同步互斥与死锁
Mar 22 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
pycharm安装及如何导入numpy
Apr 03 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
Django+Django-Celery+Celery的整合实战
Jan 20 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
javascript模拟map输出与去除重复项的方法
2015/02/09 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python八大排序算法速度实例对比
2017/12/06 Python
Form表单及django的form表单的补充
2019/07/25 Python
python无序链表删除重复项的方法
2020/01/17 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
python集合能干吗
2020/07/19 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
计算机维护专业推荐信
2014/02/27 职场文书
学雷锋倡议书
2015/01/19 职场文书
故意伤害辩护词
2015/05/21 职场文书
雷锋的观后感
2015/06/10 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
python turtle绘图
2022/05/04 Python