Python的爬虫框架scrapy用21行代码写一个爬虫


Posted in Python onApril 24, 2017

开发说明

开发环境:Pycharm 2017.1(目前最新)

开发框架:Scrapy 1.3.3(目前最新)

目标

爬取线报网站,并把内容保存到items.json里

页面分析

Python的爬虫框架scrapy用21行代码写一个爬虫

根据上图我们可以发现内容都在类为post这个div里

下面放出post的代码

<div class="post">
<!-- baidu_tc block_begin: {"action": "DELETE"} -->
<div class="date"><span>04月</span><span class="f">07日</span></div><!-- baidu_tc block_end -->
<h2><a href="http://www.abckg.com/193.html" rel="external nofollow" title="4月7日 淘金币淘里程领取京东签到" rel="bookmark" target="_blank">4月7日 淘金币淘里程领取京东签到</a><span>已结束</span></h2>
<h6>发布日期: 2017-04-07 | 分类: <a href="http://www.abckg.com/xunibi" rel="external nofollow" >虚拟币</a> | 浏览:125177
</h6><div class="intro"><p>淘金币一键领取 http://021.tw/t/ https://www.chaidu.com/App/Web/Taobao-Coin/ 【电脑端30金币】 https://taojinbi.taobao.com/inde ... auto_take=true 【手机端30金币】 http://h5.m.taobao...</p></div></div>

实现方法

1、定义items

class DemoItem(scrapy.Item):
 id = scrapy.Field()
 title = scrapy.Field()
 href = scrapy.Field()
 content = scrapy.Field()

2、新建一个爬虫名为test

# -*- coding: utf-8 -*-
import scrapy
from demo.items import DemoItem
from scrapy.http import Request
class TestSpider(scrapy.Spider):
 #定义爬虫的名字和需要爬取的网址
 name = "test"
 allowed_domains = ["www.abckg.com"]
 start_urls = ['http://www.abckg.com/']
 def parse(self, response):
 for resp in response.css('.post'):
  #实例化item
  item = DemoItem()
  #把获取到的内容保存到item内
  item['href'] = resp.css('h2 a::attr(href)').extract()
  item['title'] = resp.css('h2 a::text').extract()
  item['content'] = resp.css('.intro p::text').extract()
  yield item
  
 #下面是多页面的爬取方法
 urls = response.css('.pageinfo a::attr(href)').extract()
 for url in urls:
  yield Request(url, callback=self.parse)
 categorys = response.css('.menu li a::attr(href)').extract()
 for ct in categorys:
  yield Request(ct, callback=self.parse)

3、修改settings.py,添加以下代码

FEED_EXPORT_ENCODING = 'utf-8'

#运行

打开cmd输入

scrapy crawl test -o items.json

Python的爬虫框架scrapy用21行代码写一个爬虫

Python的爬虫框架scrapy用21行代码写一个爬虫

已知bug

如果多次运行该爬虫,不会覆盖原有的内容,而是追加数据(好像是scrapy的bug)

可拓展内容

     1、定时运行爬虫,当检查到网站更新时获取新数据并发邮件通知

     2、检测数据是否重复

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python字典简介以及用法详解
Nov 15 Python
Django自定义用户认证示例详解
Mar 14 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
对python:print打印时加u的含义详解
Dec 15 Python
Django中如何使用sass的方法步骤
Jul 09 Python
Django model update的多种用法介绍
Mar 28 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
Python连接mysql方法及常用参数
Sep 01 Python
python中lower函数实现方法及用法讲解
Dec 23 Python
Pytest之测试命名规则的使用
Apr 16 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 #Python
批量获取及验证HTTP代理的Python脚本
Apr 23 #Python
深入理解python中的select模块
Apr 23 #Python
Python3如何解决字符编码问题详解
Apr 23 #Python
Python制作刷网页流量工具
Apr 23 #Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 #Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 #Python
You might like
层叠菜单的动态生成
2006/10/09 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
小程序实现留言板
2018/11/02 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
python之Socket网络编程详解
2016/09/29 Python
浅谈Python peewee 使用经验
2017/10/20 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
面试后的英文感谢信
2014/02/01 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
党委班子剖析材料
2014/08/21 职场文书
学雷锋的心得体会
2014/09/04 职场文书
运动会宣传稿100字
2015/07/23 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers