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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
python生成器的使用方法
Nov 21 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
Python Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
使用tensorflow实现AlexNet
Nov 20 Python
Django工程的分层结构详解
Jul 18 Python
解决Python对齐文本字符串问题
Aug 28 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
在python中对于bool布尔值的取反操作
Dec 11 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python保留小数位的三种实现方法
2020/01/07 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
园林资料员岗位职责
2013/12/30 职场文书
简单租房协议书
2014/04/09 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
十七岁的单车观后感
2015/06/12 职场文书
基层工作经历证明
2015/06/19 职场文书
投诉书范文
2015/07/02 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL