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如何把嵌套列表转变成普通列表
Mar 20 Python
对numpy中轴与维度的理解
Apr 18 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
python文件读写代码实例
Oct 21 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
python 实现单例模式的5种方法
Sep 23 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
关于PHP语言构造器介绍
2013/07/08 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
php图像处理类实例
2015/07/28 PHP
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
荆州古城导游词
2015/02/06 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏