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 thread 并发且顺序运行示例
Apr 09 Python
Python 用户登录验证的小例子
Mar 06 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
使用python绘制温度变化雷达图
Oct 18 Python
python爬虫之遍历单个域名
Nov 20 Python
np.random.seed() 的使用详解
Jan 14 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python如何实现机器人聊天
Sep 10 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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
PHP 引用文件技巧
2010/03/02 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
Python实现约瑟夫环问题的方法
2016/05/03 Python
不要用强制方法杀掉python线程
2017/02/26 Python
python 全文检索引擎详解
2017/04/25 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
python开发前景如何
2020/06/11 Python
Python self用法详解
2020/11/28 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
个人安全生产责任书
2014/07/28 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
搞笑结婚保证书
2015/05/08 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
总经理致辞
2015/07/29 职场文书
三好学生主要事迹材料
2015/11/03 职场文书