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中的全局变量用法分析
Jun 09 Python
速记Python布尔值
Nov 09 Python
对python产生随机的二维数组实例详解
Dec 13 Python
Python通用循环的构造方法实例分析
Dec 19 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
python 图片去噪的方法示例
Jul 09 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
Python如何将函数值赋给变量
Apr 28 Python
django 将自带的数据库sqlite3改成mysql实例
Jul 09 Python
Python常用数据分析模块原理解析
Jul 20 Python
Python基础之进程详解
May 21 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
python中执行shell命令的几个方法小结
2014/09/18 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Python探索之pLSA实现代码
2017/10/25 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Django中的cookie和session
2019/08/27 Python
Python3并发写文件与Python对比
2019/11/20 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
会计专业的自荐信
2013/12/12 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
上课说话检讨书500字
2014/11/01 职场文书
整改报告格式
2014/11/06 职场文书
党支部书记岗位职责
2015/02/15 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
python中pymysql包操作数据库方法
2022/04/19 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python