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字符串排序方法
Aug 29 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
详解Appium+Python之生成html测试报告
Jan 04 Python
python3 深浅copy对比详解
Aug 12 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
python新式类和经典类的区别实例分析
Mar 23 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
浅谈Python 参数与变量
Jun 20 Python
Python使用DFA算法过滤内容敏感词
Apr 22 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
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
关于Django Models CharField 参数说明
2020/03/31 Python
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
25道Java面试题集合
2013/05/21 面试题
大学生毕业自我鉴定范文
2014/02/03 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
毕业实习计划书
2015/01/16 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
Python 中面向接口编程
2022/05/20 Python