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中os和shutil模块实用方法集锦
May 13 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python格式化日期时间操作示例
Jun 28 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
Python爬虫使用代理IP的实现
Oct 27 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
Dec 10 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
Tensorflow 实现释放内存
Feb 03 Python
python对Excel的读取的示例代码
Feb 14 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
Python基础之tkinter图形化界面学习
Apr 29 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
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
Python算法之图的遍历
2017/11/16 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Python进度条的制作代码实例
2019/08/31 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
Python生成器generator原理及用法解析
2020/07/20 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
岗位廉洁从业承诺书
2014/03/28 职场文书
个人培训自我鉴定
2014/03/28 职场文书
房屋继承公证书
2014/04/10 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
Java数据结构之堆(优先队列)
2022/05/20 Java/Android