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中的is和id用法分析
Jan 26 Python
Python实现的最近最少使用算法
Jul 10 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python实现打砖块游戏
Feb 25 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
python实现udp聊天窗口
Mar 31 Python
Python unittest discover批量执行代码实例
Sep 08 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获取远程图片并把它保存到本地的代码
2008/04/07 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
javascript引导程序
2008/10/26 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
为Python程序添加图形化界面的教程
2015/04/29 Python
python pygame模块编写飞机大战
2018/11/20 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
django中瀑布流写法实例代码
2019/10/14 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python模块future用法原理详解
2020/01/20 Python
pytorch实现查看当前学习率
2020/06/24 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
电子商务个人自荐信
2013/12/12 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
决心书范文
2014/03/11 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
2015年端午节活动总结
2015/02/11 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
教师读书笔记
2015/06/29 职场文书
九年级数学教学反思
2016/02/17 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
总结Java对象被序列化的两种方法
2021/06/30 Java/Android