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中的__slots__示例详解
Jul 06 Python
Django 生成登陆验证码代码分享
Dec 12 Python
python 列表删除所有指定元素的方法
Apr 19 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 Python
Python Pandas常用函数方法总结
Jun 15 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分页函数代码(简单实用型)
2010/12/02 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
python爬取m3u8连接的视频
2018/02/28 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
Python饼状图的绘制实例
2019/01/15 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
python性能测试工具locust的使用
2020/12/28 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
自我评价范文
2013/12/22 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
学校运动会霸气口号
2014/06/07 职场文书
重点工程汇报材料
2014/08/27 职场文书
小学运动会报道稿
2014/10/04 职场文书
新闻稿格式范文
2015/07/18 职场文书