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

news/2024/5/9 2:56:18/文章来源:https://blog.csdn.net/weixin_43857152/article/details/86071216

爬取每天更新的新闻,使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_851000.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6个线上视频音频转换网站

1.Zamzar Zamzar是一项免费的线上转换格式网站&#xff0c;把歌曲、图档、影像和文件转变成不同的格式。其服务特点是高品质的文件格式转换。基本的免费服务&#xff0c;可以让您转换的文件大小为100MB 。如果想拥有更多功能的服务&#xff0c;你可以注册成为基础会员&#xff…

四年大学下那些让我欲罢不能的网站

在本科学习期间&#xff0c;通过Google/百度搜索接触了各种各样的学习网站&#xff0c;收益匪浅&#xff0c;现在来分享一下吧 分为三种类型&#xff0c;“课程网站”&#xff0c;“编程网站”&#xff0c;“社区网站”&#xff0c;贵精不贵多&#xff0c;每种分享几个 课程网站…

Github Pages + jekyll 全面介绍极简搭建个人网站和博客

本文将会全面介绍一下如何使用Github Pages jekyll搭建个人站点&#xff0c;所谓极简的意思就是不用使用git和本地构建jekll服务&#xff0c;直接在Github网站上编辑设置即可&#xff0c;但会涉及到jekll的一些配置和编程控制。可以参看我的网站模板&#xff1a;https://scott…

css可以对网页干什么,css对网页的优势-专业SEO技术教程(33)

css对网页的优势-专业SEO技术教程(33)采用css布局相对于传统的table网页布局的显著优势1.表现和内容相分离将设计部分剥离出来的放在一个独立样式文件中&#xff0c;HTML文件中只存放文本信息。这样的页面对搜索引擎更加友好。2.提高页面浏览速度对于同一个页面视觉效果&#x…

【转载】IIS网站如何同时解析带www和不带www的域名

针对公网上线的网站系统&#xff0c;很多网站的域名会同时含有带www和不带www的域名解析记录&#xff0c;如果需要同时解析带www和不带www的域名信息&#xff0c;则需要在相应的域名解析平台(如阿里云域名解析平台、腾讯云域名解析平台)设置不带www的主域名以及带www的域名解析…

搜索引擎优化:常用的SEO六个指标

在做网站推广过程中&#xff0c;搜索引擎优化是一个重要点&#xff0c;绝大部分行业来自自然搜索的流量都是非常大的&#xff0c;正因为如此&#xff0c;一般企业隔一段时间就对网站自然搜索的情况作一个KPI考核&#xff0c;而这些重点指标不外乎&#xff1a;网页的收录数量、网…

阿里云上发布自己的网站的方法

在阿里云上发布自己的网站的方法&#xff1a; 一、在阿里云上发布自己的网站的方法&#xff1a; 进入我的电脑&#xff0c;在头部输入ftp&#xff1a;//60.205.48.122&#xff08;IP地址为自己注册的阿里云账号上的IP地址&#xff09; 进入以后登录自己的账号 用户名&#x…

java使用HttpURLConnection检索网站时403错误处理方式

java使用HttpURLConnection检索网站时403错误处理方式: 我们通过代码方式访问网站时会报错&#xff1a; 此种情况分2中类型&#xff0c; 1.需要登录才可以访问&#xff1b; 2.需要设置User-Agent来欺骗服务器。 connection.setRequestProperty("User-Agent", &qu…

解决某些网站,图片不能下载

如下图&#xff0c;右键图片&#xff0c;没有保存图片的选项 按下F12 拷贝src中的地址&#xff0c;输入到浏览器&#xff0c;这时候就可以保存图片了

给duckling网站加上cnzz网站统计信息

第一&#xff0c;注册cnzz帐号&#xff0c;网址http://www.cnzz.com/ 第二&#xff0c;登录帐号&#xff0c;获取代码&#xff1b; 第三&#xff0c;根据自己的需要&#xff0c;将代码加入网站的公共页面&#xff0c;比如说head、foot、version页面都可以。 第四&#xff0c…

网站压力测试工具Jmeter安装与使用

系统是Windows XP 配置此工具前&#xff0c;需要先在机器上安装jdk 如下是在jdk1.7的基础上配置的&#xff1b; 安装步骤如下&#xff1a; 第一步&#xff1a;解压apache-jmeter-2.8.zip文件至c盘&#xff0c;本文解压至C:\jmeter2.8目录下。 第二步&#xff1a;桌面上选择“我…

十大抢手的网站压力测试工具

原文链接&#xff1a;http://blog.163.com/weiwenjuan_bj/blog/static/1403503362010621111052355/ 两天&#xff0c;jnj在本站发布了《如何在低速率网络中测试 Web 应用》&#xff0c;那是测试网络不好的情况。而下面是十个免费的可以用来进行Web的负载/压力测试的工具&#x…

使用WinSCP 上传 jeecms 到linux centos中 显示乱码问题,网站无法使用的解决方法

第一、设置WinSCP上传时的编码为utf-8如下&#xff1a; 第二、将linux的默认字符集设置为zh_CN.UTF-8 vi /etc/sysconfig/i18n 内容如下&#xff1a; LANG"zh_CN.UTF-8" SUPPORTED"zh_CN.UTF-8:zh_CN:zh" SYSFONT"latarcyrheb-sun16" [rootcan…

如何使用firefox浏览器查看记住的网站密码

工具——》选项——》安全 如下图&#xff1a; 点击就出现浏览器记住的登录网站、帐号、密码了&#xff0c;密码是明码。

如何使用遨游浏览器查看记住的网站密码

点击“显示密码”即可&#xff0c;密码是明码&#xff01;

tomcat部署多个项目,通过不同域名解析访问不同的网站

win7、tomcat8、jdk1.7 第一&#xff1a;通过配置hosts文件模拟&#xff0c;hosts文件所在路径&#xff1a;C:\Windows\System32\drivers\etc 修改如下&#xff1a; #测试tomcat配置多个项目&#xff0c;用二级域名访问 127.0.0.1 www.ibelieve.com 127.0.0.1 bbs.ib…

.NET中实现网站的国际化

本文适当的修改了原文&#xff0c;&#xff0c;特此说明 原文地址&#xff1a;http://dotnet.9sssd.com/aspnet/art/949 网站在开发的过程中需要实现多语言版本&#xff0c;我们暂且认为有英语和汉语两个版本。网站结构包括&#xff0c;UI过程&#xff0c;rest服务&#xff0…

人生苦短,我用Python(二)— 爬取会议网站 EasyChair Smart CFP

寒假留校帮学长写了个爬虫&#xff0c;抓取会议网站上一些CFP信息。想着把一些知识点、坑点记下来&#xff0c;一来做个小总结给工作收收尾&#xff0c;二是以后再遇到好从容应对。 这是我写的第二个比较完善的爬虫了&#xff0c;比第一个要简单许多&#xff0c;完全过程化的代…

由12306.CN谈谈网站性能技术http://coolshell.cn/articles/6470.html

由12306.CN谈谈网站性能技术 2012年01月16日 陈皓 评论 340 条评论 163,061 人阅读 12306.cn网站挂了&#xff0c;被全国人民骂了。我这两天也在思考这个事&#xff0c;我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促&#xff0c;而且完全基于本人有限的经验和…

搭建VueJS2.9+ElementUI单页面网站,编写导航页,导航栏跳转、切换

对于一个单页面应用来说&#xff0c;导航页是至关重要的一个页面&#xff0c;所有的组件都会在这个页面里进行显示。先看效果图&#xff0c;文章最下边有我的模板源代码下载路径。接下来我们就开始进行导航页的开发。 1、安装vue-router 搭建vue环境时装过的忽略此步骤。在…