爬取每天更新的新闻,使用scrapy框架,Python2.7,存入MySQL数据库,将每次的爬虫日志和爬取过程中的bug信息存为log文件下。定义bat批处理文件,添加到计划任务程序中,自动爬取。

额…
1.在items文件中,定义需要爬取的类

2.在settings文件中设置默认项,设置日志输出格式,打开pipeline文件,设置delay时间,设置数据库信息,设置请求头等信息
3.编写自己的spider文件

class TouchuangSpider(scrapy.Spider):name = 'touchuang'allowed_domains = ['xunjk.com']url = {"1": "http://www.xunjk.com/xinwen/rongzi/",     # 融资"2": "http://www.xunjk.com/shangye/",           # 商业"3": "http://www.xunjk.com/xinwen/yanjiu/",      # 研究"4": "http://www.xunjk.com/xinwen/keji/",       # 科技"5": "http://www.xunjk.com/xinwen/jinrong/",    # 金融"6": "http://www.xunjk.com/xinwen/dongcha/",    # 洞察"7": "http://www.xunjk.com/xinwen/yejie/"       # 业界}start_urls = [url["1"], url["2"], url["3"], url["4"], url["5"], url["6"], url["7"]]# start_urls = [url["1"]]

因为同时爬取几个板块的新闻,将板块编号设置为字典k值,链接设置为v值。
访问url,回调prase()函数,进一步处理。
提取中用到的常用的xpath提取,这个没什么可说的

 def request_page(self,response):date = time.strftime("%Y%m%d")try:item = XinwenItem()item["title"] = response.xpath("//div[@class='main_c']/h1/text()").extract_first()      # 获取新闻标题item["zuozhe"] = response.xpath("//div[@class='infos']/span[@class='from']/a/text()").extract_first()      # 获取新闻来源page_url = response.xpath("//div[@class='breadnav']/a[3]/@href").extract_first()for k, v in self.url.items():       # 为获取新闻分类id,获取到当前页分类url作为字典v值,取得k值if v == page_url:item["fenlei_id"] = k   # k为文章分类id# 判断文章中是否有图片,有获取图片;无返回空item["created_at"] = response.xpath("//div[@class='infos']/span[@class='time']/text()").extract_first()except Exception as e:# 若报错,将错误打印txt返回with open(r"D:\pycharm_projects\xinwenyuan\xinwen\log\/"+date+".txt", "a+") as f:f.write("e:"+e+"\n")try:img = re.search('<img .* src="(.*?)" width="(.*?)" /></p>', response.text).group(1)item["news_pic"] = imgprint item["news_pic"]      except:item["news_pic"] = ""   # 无图片返回空

其中正文部分,刚开始用的是xpath提取文本信息,但考虑到有部分新闻都有图片信息,并且后期还要将图片和文本一一对应,所以改用正则匹配p标签获取正文,最后返回items
4.存入mysql数据库
在pipelines文件中编写sql信息

class XinwenPipeline(object):def __init__(self):print "connect successful..."# 链接MySQL数据库self.connect = pymysql.connect(host=settings.MYSQL_HOST,user=settings.MYSQL_USER,password=settings.MYSQL_PASSWD,db=settings.MYSQL_DBNAME,port=settings.MYSQL_PORT,charset="utf8")# 获取游标self.cursor = self.connect.cursor()# 存入数据库def process_item(self, item, spider):date = time.strftime("%Y%m%d")print "doing something..."try:# 执行sql语句插入,其中title设置为唯一字段,防止重复录入sql = '''insert into articles(title,zuozhe,content,fenlei_id,created_at,news_pic,updated_at,dianji) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)'''self.cursor.execute(sql, (item["title"],item["zuozhe"],item["content"],item["fenlei_id"],item["created_at"],item["news_pic"], item["updated_at"], item["dianji"]))self.connect.commit()      # 保存except Exception as error:# 出现错误时打印错误日志with open(r"D:\pycharm_projects\xinwenyuan\xinwen\log\/"+date+".txt", "a+") as f:f.write(item["created_at"]+"error:"+error[1]+"\n")return item# 关闭数据库def close_spider(self, spider):print "working done..."self.cursor.close()self.connect.close()

5.在start.py中设置定时任务,实现每天定时爬取

最后是设置bat文件

定时任务这一部分参考了网上的文档,原链接如下:
https://blog.csdn.net/zwq912318834/article/details/77806737
将设置好的bat文件加入到计划执行任务中


其中,本次爬虫任务采用的scrapy默认的线程数,没有设置其他的多线程,没有使用代理ip,所以只设置了delay时间,这样爬虫随时会因为ip被封挂掉的,不过到现在还好,一切ok。
代码中还有很多其他的问题,小伙伴们可以留言交流[认真滑稽脸].jpg

记录使用scrapy爬取新闻网站最新新闻存入MySQL数据库,每天定时爬取自动更新相关推荐

  1. python爬虫之爬取掘金网首页存入mysql数据库

    博主是个前端小白,最近在学习爬虫,写个实战系列也是想记录自己学习的过程,以便后续回顾 欢迎大家一起交流学习.共同进步 这篇文章达成的效果是爬掘金网的首页的数据存到mysql数据库里 做这个实战你需要具 ...

  2. python爬取 xueqiu网 数据 存入MySQL数据库中

    #导入包 from urllib import request import json import pymysql #声名一个class类 class mysql_connect(object):# ...

  3. python爬虫:爬取动态网页并将信息存入MySQL数据库

    目标网站 http://www.neeq.com.cn/disclosure/supervise.html 爬取网页该部分内容 网页分析 查看网页源代码发现没有表格部分内容,对网页请求进行分析 F12 ...

  4. 在ubuntu 16.04里使用python—scrapy将爬取到的数据存到mysql数据库中的一些随笔

    一.将爬取的数据保存到mysql数据库的代码(已经能将爬取的数据保存到json文件) (1)编辑Pipeline.py文件 (2)编辑settings.py文件 二.将数据保存至mysql数据库出现的 ...

  5. 用 Python selenium爬取股票新闻并存入mysql数据库中带翻页功能demo可下载

    用 Python selenium爬取实时股票新闻并存入mysql数据库中 1.分析需求 2.创建表 3.分析需要爬取的网页内容 4.python里面selenium进行爬虫操作 1.添加包 2.连接 ...

  6. Scrapy爬取重庆安居客二手房并存入mysql数据库(下)

    上篇中我们获取了重庆的一二级区(Scrapy爬取重庆安居客二手房并存入mysql数据库(上)),这一篇我们根据二级区获取相应的二手房信息. 初始化数据库 创建二手房信息数据库表,house表存放二手房 ...

  7. python爬取新闻存入数据库_python 爬取古诗文存入mysql数据库的方法

    使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column 'title' in 'field list'.原来是我写s ...

  8. python爬虫开发数据库设计入门经典_Python3实现的爬虫爬取数据并存入mysql数据库操作示例...

    本文实例讲述了Python3实现的爬虫爬取数据并存入mysql数据库操作.分享给大家供大家参考,具体如下: 爬一个电脑客户端的订单.罗总推荐,抓包工具用的是HttpAnalyzerStdV7,与chr ...

  9. 数据爬取存入MySQL数据库

    目录 创建test数据库 创建test的数据库 ''' 创建数据库 ''' self.mydb = pymysql.connect( host="localhost", user= ...

最新文章

  1. 一、稀疏数组的实际应用和代码实现
  2. java list想加_利用java List 实现多项式相加,相乘
  3. 郑州尚新科技--J2EE考试题
  4. scss里的符号的用法
  5. StarkSoft题库管理系统
  6. U-最小公倍数 递归
  7. 如何利用Camtasia为视频添加注释?
  8. 设计模式入门-单例模式
  9. 复盘模型_如何运用MT4软件进行复盘,提高水平
  10. 房屋租赁合同电子版最新版(word版本适合个人租房用)
  11. python-txt转换为pdf
  12. 计算机网络中速率、带宽、吞吐量的区别
  13. 中国石油大学(北京)-《思想道德修养与法律基础#》第一阶段在线作业
  14. javaweb项目JS文件报错解决办法
  15. 七个合法学习黑客技术的网站,让你从萌新成为大佬
  16. android 背光灯分析,Android灯光系统--深入理解背光灯
  17. Broadcast Receiver的两种注册方法
  18. [work] Jacobian矩阵和Hessian矩阵
  19. 自己做的c语言笔记大部分来自runoob,不是原创只是记录
  20. java 解析m3u8的实例_使用java线程池批量下载m3u8。合并mp4.

热门文章

  1. Linux Mint TLP设置
  2. 免费学习coursera的课程的操作办法
  3. 4.25 使用图标集功能标识指定范围的数据 [原创Excel教程]
  4. 飞凌嵌入式丨千兆网之RGMII SGMII解析
  5. 使用腾讯云服务器搭建离线(中转)网盘
  6. 网页出现503 service unavailable是什么意思?怎么解决?
  7. chirp和tone burst信号激励
  8. Makefile中的一些小知识点,及常用的makefile举例
  9. Java实现就诊排队叫号系统(使用ArrayList集合实现)
  10. 如何使用a股量化交易api接口?