学习自http://blog.csdn.net/u012150179/article/details/34486677
重写了部分代码使之能够爬取本博客.
0.创建项目
代码语言:javascript复制scapy startproject URLteam
1.items.py
代码语言:javascript复制# -*- coding:utf-8 -*-
from scrapy.item import Item, Field
class UrlteamItem(Item):
article_name = Field()
article_url = Field()
2.pipelines.py
代码语言:javascript复制import json
import codecs
class UrlteamPipeline(object):
def __init__(self):
self.file = codecs.open('urlteam_data.json', mode='wb', encoding='utf-8')
def process_item(self, item, spider):
line = json.dumps(dict(item)) 'n'
self.file.write(line.decode("unicode_escape"))
return item
3.settings.py
代码语言:javascript复制# -*- coding: utf-8 -*-
# Scrapy settings for urlteam project
#
# For simplicity, this file contains only the most important settings by
# default. All the other settings are documented here:
#
# http://doc.scrapy.org/en/latest/topics/settings.html
#
BOT_NAME = 'URLteam'
SPIDER_MODULES = ['URLteam.spiders']
NEWSPIDER_MODULE = 'URLteam.spiders'
# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'urlteam ( https://www.urlteam.org)'
#禁止cookies,防止被ban
COOKIES_ENABLED = False
ITEM_PIPELINES = {
'URLteam.pipelines.UrlteamPipeline':300
}
4.spiders目录下建立urlteam.py
代码语言:javascript复制#!/usr/bin/python
# -*- coding:utf-8 -*-
# from scrapy.contrib.spiders import CrawlSpider,Rule
from scrapy.spider import Spider
from scrapy.http import Request
from scrapy.selector import Selector
from URLteam.items import UrlteamItem
class URLteamSpider(Spider):
name = "urlteam"
#减慢爬取速度 为1s
download_delay = 1
allowed_domains = ["urlteam.org"]
start_urls = [
"https://www.urlteam.org/2016/06/scrapy-入门项目-爬虫抓取w3c网站/"
]
def parse(self, response):
sel = Selector(response)
#items = []
#获得文章url和标题
item = UrlteamItem()
article_url = str(response.url)
article_name = sel.xpath('//h1/text()').extract()
item['article_name'] = [n.encode('utf-8') for n in article_name]
item['article_url'] = article_url.encode('utf-8')
yield item
#获得下一篇文章的url
urls = sel.xpath('//div[@class="nav-previous"]/a/@href').extract()
for url in urls:
print url
yield Request(url, callback=self.parse)
5.运行与结果
在urlteam项目根目录下运行
代码语言:javascript复制scrapy crawl urlteam
结果.预计会花很多时间,,反正我运行了半小时还没结束,不过可以提前看看结果,我的json文件的内容是:
比较长,基本是标题和url都爬下来了,.,大约有100多个页面,现在半小时才爬了90 …
代码语言:javascript复制{"article_name": ["scrapy-笔记一 入门项目 爬虫抓取w3c网站"], "article_url": "https://www.urlteam.org/2016/06/scrapy-入门项目-爬虫抓取w3c网站/"}
{"article_name": ["视力大作战_web静态小游戏制作"], "article_url": "https://www.urlteam.org/2016/06/视力大作战_web静态小游戏制作/"}
{"article_name": ["解决 启动mysql 提示 stop: Unknown instance"], "article_url": "https://www.urlteam.org/2016/06/解决-启动mysql-提示-stop-unknown-instance/"}
{"article_name": ["树莓派 python 百度语音控制 gpio 控制开关灯"], "article_url": "https://www.urlteam.org/2016/06/树莓派-python-百度语音控制-gpio-控制开关灯/"}
{"article_name": ["IT方向各种资源集合"], "article_url": "https://www.urlteam.org/2016/05/it方向各种资源集合/"}
{"article_name": ["交互式艺术设计–壁纸设计生成器"], "article_url": "https://www.urlteam.org/2016/05/交互式艺术设计/"}
{"article_name": ["为何总是忙碌却不知干了什么? 关于栈式与优先队列式的处事风格"], "article_url": "https://www.urlteam.org/2016/05/为何总是忙碌却不知干了什么-关于栈式与优先队列/"}
{"article_name": ["模拟EXCEL排序 c sort排序 多重排序 题解"], "article_url": "https://www.urlteam.org/2016/05/模拟excel排序-c-sort排序-多重排序-题解/"}
{"article_name": ["ubuntu 14|15下服务器下搭建 hustoj 比赛平台 附多题库与问题解析"], "article_url": "https://www.urlteam.org/2016/05/ubuntu-1415下服务器下搭建-hustoj-比赛平台-附多题库与问题解/"}
{"article_name": ["ACM算法模板收藏 支持免费下载"], "article_url": "https://www.urlteam.org/2016/05/acm算法模板收藏-支持免费下载/"}
{"article_name": ["银行业务队列简单模拟 STL队列 题解", "STL__sqeue 队列", "5-18 银行业务队列简单模拟 (25分)"], "article_url": "https://www.urlteam.org/2016/05/银行业务队列简单模拟-stl队列-题解/"}
{"article_name": ["5-26 Windows消息队列 (25分) 结构体优先队列解法", "优先队列:", "5-26 Windows消息队列 (25分)", "题解:"], "article_url": "https://www.urlteam.org/2016/05/5-26-windows消息队列-25分-结构体优先队列解法/"}
{"article_name": ["遥 控 器 | 河南省第五届省赛题解"], "article_url": "https://www.urlteam.org/2016/05/遥-控-器-河南省第五届省赛题解/"}
{"article_name": ["2016″百度之星” – 资格赛(更新中)", "Problem A", "题解:", "Problem B", "Problem D"], "article_url": "https://www.urlteam.org/2016/05/2016百度之星-资格赛更新中/"}
{"article_name": ["python 规范审查 pylint 的使用"], "article_url": "https://www.urlteam.org/2016/05/python-规范审查-pylint-的使用/"}
{"article_name": ["python-pep8 编码规范"], "article_url": "https://www.urlteam.org/2016/05/python-pep8-编码规范/"}
{"article_name": ["Merchant’s Guide To The Galaxy笔试题解析 python解决 罗马数字转阿拉伯数字"], "article_url": "https://www.urlteam.org/2016/05/merchants-guide-to-the-galaxy笔试题解析/"}
{"article_name": ["背包九讲之分组背包-HDU1712题解"], "article_url": "https://www.urlteam.org/2016/05/背包九讲之分组背包-hdu1712题解/"}
{"article_name": ["python语音智能对话聊天机器人,linux&&树莓派双平台兼容"], "article_url": "https://www.urlteam.org/2016/05/python语音智能对话聊天机器人,linux树莓派双平台兼容/"}
{"article_name": ["河南省第一届ACM程序设计大赛题解"], "article_url": "https://www.urlteam.org/2016/04/河南省第一届acm程序设计大赛题解/"}
{"article_name": ["动态规划-各种子序列问题集合"], "article_url": "https://www.urlteam.org/2016/04/动态规划-各种子序列问题集合/"}
{"article_name": ["背包九讲-问法的灵活变化"], "article_url": "https://www.urlteam.org/2016/04/背包九讲-问法的灵活变化/"}
{"article_name": ["背包九讲之二维费用的背包", "FATE"], "article_url": "https://www.urlteam.org/2016/04/背包九讲之二维费用的背包/"}
{"article_name": ["写代码没激情怎么办?atom教你酷炫掉咋天"], "article_url": "https://www.urlteam.org/2016/04/写代码没激情怎么办?atom教你酷炫掉咋天/"}
{"article_name": ["解决.htaccess: Invalid command ‘RewriteEngine’,问题"], "article_url": "https://www.urlteam.org/2016/04/解决-htaccess-invalid-command-rewriteengine问题/"}
{"article_name": ["背包九讲之多重背包&&混合背包详解"], "article_url": "https://www.urlteam.org/2016/04/背包九讲之多重背包详解/"}
{"article_name": ["STL set"], "article_url": "https://www.urlteam.org/2016/04/stl-set/"}
{"article_name": ["c语言函数库学习~sscanf~格式化输入"], "article_url": "https://www.urlteam.org/2016/04/c语言函数库学习sscanf格式化输入/"}
{"article_name": ["C的|、||、&、&&、异或、~、!运算 位运算"], "article_url": "https://www.urlteam.org/2016/04/c的、、、、异或、、!运算-位运算/"}
{"article_name": ["STL 算法部分 原创入门教程,要详细资料请百度"], "article_url": "https://www.urlteam.org/2016/04/stl-算法部分-原创入门教程,要详细资料请百度/"}
{"article_name": ["acm比赛刷题小技巧"], "article_url": "https://www.urlteam.org/2016/04/acm比赛刷题小技巧/"}
{"article_name": ["shell脚本实现监控服务器mysql,解决服务器内存不足自动关闭mysql问题"], "article_url": "https://www.urlteam.org/2016/04/shell脚本实现监控服务器mysql,解决服务器内存不足自动/"}
{"article_name": ["linux运维常用状态检测工具集锦"], "article_url": "https://www.urlteam.org/2016/04/linux运维常用状态检测工具集锦/"}
{"article_name": ["背包九讲之完全背包详解"], "article_url": "https://www.urlteam.org/2016/04/背包九讲之完全背包详解/"}
{"article_name": ["背包九讲之01背包详解"], "article_url": "https://www.urlteam.org/2016/04/背包九讲之01背包详解/"}
{"article_name": ["使用linux下的dd指令为树莓派做备份"], "article_url": "https://www.urlteam.org/2016/04/使用linux下的dd指令为树莓派做备份/"}
{"article_name": ["linux服务器ssh文件传输—scp使用指南"], "article_url": "https://www.urlteam.org/2016/03/linux服务器ssh文件传输-scp使用指南/"}
{"article_name": ["2016-3.28.重新整理学习生活方针"], "article_url": "https://www.urlteam.org/2016/03/2016-3-28-重新整理学习生活方针/"}
{"article_name": ["wordpress解决谷歌字体问题–与谷歌字体的战争!"], "article_url": "https://www.urlteam.org/2016/03/改写一句wordpress解决谷歌字体问题/"}
{"article_name": ["mysql基本操作以及python控制mysql(3)–python控制"], "article_url": "https://www.urlteam.org/2016/03/mysql基本操作以及python控制mysql(3)-python控制/"}
{"article_name": ["mysql基本操作以及python控制mysql(2)–mysql基础操作"], "article_url": "https://www.urlteam.org/2016/03/mysql基本操作以及python控制mysql(2)-mysql基础操作/"}
{"article_name": ["mysql基本操作以及python控制mysql(1)–环境安装"], "article_url": "https://www.urlteam.org/2016/03/mysql基本操作以及python控制mysql(1)-环境安装/"}
{"article_name": ["python解决UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position问题"], "article_url": "https://www.urlteam.org/2016/03/python解决unicodeencodeerror-ascii-codec-cant-encode-characters-in-position问题/"}
{"article_name": ["人脸识别考勤系统-第二版本研发手札"], "article_url": "https://www.urlteam.org/2016/03/人脸识别考勤系统-第二版本研发手札/"}
{"article_name": ["与高兄信"], "article_url": "https://www.urlteam.org/2016/03/与高兄信/"}
{"article_name": ["仔细想想,该认真再纠正下生活的路线了."], "article_url": "https://www.urlteam.org/2016/03/仔细想想,该认真再纠正下生活的路线了./"}
{"article_name": ["python_os 系统文件夹操作"], "article_url": "https://www.urlteam.org/2016/03/python_os 系统文件夹操作/"}
{"article_name": ["python_face 上传本地图片进行解析"], "article_url": "https://www.urlteam.org/2016/03/python_face 上传本地图片进行解析/"}
{"article_name": ["通过python在两台linux服务器间传递文件"], "article_url": "https://www.urlteam.org/2016/03/通过python在两台linux服务器间传递文件/"}
{"article_name": ["在新服务器上搭建wordpress网站"], "article_url": "https://www.urlteam.org/2016/03/在新服务器上搭建wordpress网站/"}
{"article_name": ["让树莓派开机运行Python脚本"], "article_url": "https://www.urlteam.org/2016/03/让树莓派开机运行python脚本/"}
{"article_name": ["人脸识别考勤机开发计划"], "article_url": "https://www.urlteam.org/2016/02/人脸识别考勤机开发计划/"}
{"article_name": ["face 人脸识别与人脸库匹配python实现笔记二"], "article_url": "https://www.urlteam.org/2016/02/face人脸识别与人脸库匹配python实现笔记一/"}
{"article_name": ["face 人脸识别与人脸库匹配python实现笔记一"], "article_url": "https://www.urlteam.org/2016/02/face人脸识别与配备python实现笔记/"}
{"article_name": ["python-opencv人脸识别与树莓派摄像头转头跟随()"], "article_url": "https://www.urlteam.org/2016/02/python-opencv人脸识别与树莓派摄像头转头跟随/"}
{"article_name": ["树莓派局域网实时照片监控"], "article_url": "https://www.urlteam.org/2016/01/树莓派局域网实时照片监控/"}
{"article_name": ["创新实验室python&linux零下五度小组技能树规划"], "article_url": "https://www.urlteam.org/2016/01/创新实验室python&linux零下五度小组技能树规划/"}
{"article_name": ["python多线程100进程一起ping演习笔记"], "article_url": "https://www.urlteam.org/2016/01/python多线程100进程一起ping演习笔记/"}
{"article_name": ["python-aiml人工智能+百度语音对话"], "article_url": "https://www.urlteam.org/2016/01/python-aiml人工智能+百度语音对话/"}
{"article_name": ["python根据ip获取地理位置再查询天气情况调百度语音合成朗读"], "article_url": "https://www.urlteam.org/2016/01/python小程序-根据本机外网ip自动查询天气情况/"}
{"article_name": ["python调用百度天气api查询城市天气情况"], "article_url": "https://www.urlteam.org/2016/01/python调用百度天气api查询城市天气情况/"}
{"article_name": ["python小游戏,猫抓老鼠"], "article_url": "https://www.urlteam.org/2016/01/python小游戏,猫抓老鼠/"}
{"article_name": ["HTK隐马尔可夫模型–语音识别–项目笔记(含资源源码文件测试等)"], "article_url": "https://www.urlteam.org/2016/01/测试资源环境下载/"}
{"article_name": ["Linux查看实时带宽流量情况以及查看端口信息", "端口信息"], "article_url": "https://www.urlteam.org/2016/01/linux查看实时带宽流量情况/"}
{"article_name": ["linux下free查看内存命令详细解析"], "article_url": "https://www.urlteam.org/2016/01/linux下free查看内存命令详细解析/"}
{"article_name": ["配置apache2使用不同端口或者域名访问网站", "第二种方法用域名绑定"], "article_url": "https://www.urlteam.org/2016/01/配置apache2使用不同端口或者域名访问网站/"}
{"article_name": ["apache2的几个核心设置优化"], "article_url": "https://www.urlteam.org/2015/12/apache2的几个核心设置优化/"}
{"article_name": ["pygame-游戏开发学习笔记(九)–pygame.向量实现"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(九)-pygame-向量实现/"}
{"article_name": ["python常用函数总结"], "article_url": "https://www.urlteam.org/2015/12/python常用函数总结/"}
{"article_name": ["pygame-游戏开发学习笔记(八)–pygame.time&&fps 动画制作"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(五)-pygame-timefps-动画制作/"}
{"article_name": ["pygame-游戏开发学习笔记(七)–pygame.draw,画图。"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(七)-pygame-draw,画图。/"}
{"article_name": ["学习-用Python和Pygame写游戏-从入门到精通(6)"], "article_url": "https://www.urlteam.org/2015/12/学习-用python和pygame写游戏-从入门到精通(6)/"}
{"article_name": ["使用pyaiml机器人模块快速做个和你智能对话的大脑"], "article_url": "https://www.urlteam.org/2015/12/使用pyaiml机器人模块快速做个和你智能对话的大脑/"}
{"article_name": ["学习—用 Python 和 OpenCV 检测和跟踪运动对象"], "article_url": "https://www.urlteam.org/2015/12/学习-用-python-和-opencv-检测和跟踪运动对象/"}
{"article_name": ["百度语音识别api使用python进行调用"], "article_url": "https://www.urlteam.org/2015/12/百度语音识别api使用python进行调用/"}
{"article_name": ["树莓派开机左上角光标闪烁无法进图形系统问题解决"], "article_url": "https://www.urlteam.org/2015/12/树莓派开机左上角光标闪烁无法进图形系统问题解/"}
{"article_name": ["解决gitpush的时候因为误加入特大文件,导致push失败"], "article_url": "https://www.urlteam.org/2015/12/解决gitpush的时候因为误加入特大文件,导致push失败/"}
{"article_name": ["git–在树莓派(新电脑)重新用git进行pull以及push"], "article_url": "https://www.urlteam.org/2015/12/git-在树莓派(新电脑)重新用git进行pull以及push/"}
{"article_name": ["还没想好"], "article_url": "https://www.urlteam.org/2015/12/还没想好/"}
{"article_name": ["服务器内存占用过高导致数据库服务关闭,网站无法登陆的错误详解-制作swap交换区加大内存"], "article_url": "https://www.urlteam.org/2015/12/服务器内存占用过高导致数据库服务关闭,网站无/"}
{"article_name": ["基于树莓派以及语音与人脸识别的迎宾机器人交互系统开发计划"], "article_url": "https://www.urlteam.org/2015/12/基于树莓派以及人脸识别的迎宾机器人交互系统开/"}
{"article_name": ["pygame-游戏开发学习笔记(五)–pygame.Font,字体与中文以及错误检测的问题"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(五)-pygame-font,字体与中文以及/"}
{"article_name": ["pygame-游戏开发学习笔记(四)–pygame.display.set_mode()显示的问题"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(四)-pygame-display-set_mode显示的问题/"}
{"article_name": ["pygame-游戏开发学习笔记(三)–event事件捕捉"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(三)-event事件捕捉/"}
{"article_name": ["pygame-游戏开发学习笔记(二)–模块表与背景图样例。"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(二)-模块表与背景图样例/"}
{"article_name": ["pygame-游戏开发学习笔记(一)–SDL和pygame等环境安装"], "article_url": "https://www.urlteam.org/2015/12/pygame-游戏开发学习笔记(一)/"}
{"article_name": ["少年壮志不言愁:清华施一公演讲"], "article_url": "https://www.urlteam.org/2015/12/少年壮志不言愁:清华施一公演讲/"}
{"article_name": ["python_sqlite–简单的数据库增删查改测试"], "article_url": "https://www.urlteam.org/2015/12/python_sqlite-简单的数据库增删查改测试/"}
{"article_name": ["python–GUI–制作简单的文本文档"], "article_url": "https://www.urlteam.org/2015/12/python-gui-简单的文本文档/"}
{"article_name": ["爬虫首尝试—爬取百度贴吧图片"], "article_url": "https://www.urlteam.org/2015/12/爬虫首尝试-爬取百度贴吧图片/"}
{"article_name": ["python包包大全!经典资源"], "article_url": "https://www.urlteam.org/2015/12/python包包大全!经典资源/"}
{"article_name": ["操作系统-多进程和多线程-python"], "article_url": "https://www.urlteam.org/2015/12/操作系统-多进程和多线程-python/"}
{"article_name": ["2015.十一月工作学习计划-ly–(初计划)"], "article_url": "https://www.urlteam.org/2015/12/2015-十一月工作学习计划-ly-(初计划)/"}
{"article_name": ["心情调节器开发记录"], "article_url": "https://www.urlteam.org/2015/11/心情调节器开发记录/"}
{"article_name": ["AYProcessView启动动画实现"], "article_url": "https://www.urlteam.org/2015/11/ayprocessview启动动画实现/"}
原创文章,转载请注明: 转载自URl-team
本文链接地址: Scrapy笔记三 自动多网页爬取-本wordpress博客所有文章
Related posts:
- Scrapy-笔记一 入门项目 爬虫抓取w3c网站
- Scrapy-笔记二 中文处理以及保存中文数据
- Scrapy笔记四 自动爬取网页之使用CrawlSpider
- Scrapy笔记五 爬取妹子图网的图片 详细解析