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命令行参数sys.argv使用示例
Jan 28 Python
在python中的socket模块使用代理实例
May 29 Python
python进阶教程之词典、字典、dict
Aug 29 Python
在windows系统中实现python3安装lxml
Mar 23 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Python实现登录接口的示例代码
Jul 21 Python
使用python判断你是青少年还是老年人
Nov 29 Python
python Django的web开发实例(入门)
Jul 31 Python
利用python实现周期财务统计可视化
Aug 25 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 Python
Python基础之教你怎么在M1系统上使用pandas
May 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访问查询mysql数据的三种方法
2006/10/09 PHP
用session做客户验证时的注意事项
2006/10/09 PHP
PHP 字符串分割和比较
2009/10/06 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
php实现购物车功能(下)
2016/01/05 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
js和as的稳定传值问题解决
2013/07/14 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
python为tornado添加recaptcha验证码功能
2014/02/26 Python
python使用post提交数据到远程url的方法
2015/04/29 Python
对Python中range()函数和list的比较
2018/04/19 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
python 消费 kafka 数据教程
2019/12/21 Python
英国名牌男装店:Standout
2021/02/17 全球购物
工业设计专业个人求职信范文
2013/12/28 职场文书
出纳员岗位责任制
2014/02/11 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
爱国电影观后感
2015/06/19 职场文书
作文之亲情600字
2019/09/23 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js