1. 引言

Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是爬虫做大的必备基础。本文将讲解如何快速安装此框架并使用起来。

2. 安装Twisted

2.1 同安装Lxml库

(参考《为编写网络爬虫程序安装Python3.5》3.1节)一样,通过下载对应版本的.whl文件先安装twisted库,下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

2.2 安装twisted

打开命令提示符窗口,输入命令:

pip install E:\demo\Twisted-16.4.1-cp35-cp35m-win_amd64.whl(下载好的twisted模块的whl文件路径)

3. 安装scrapy

twisted库安装成功后,安装scrapy就简单了,在命令提示符窗口直接输入命令: pip install scrapy 回车

安装关联模块pypiwin32,在命令提示符窗口直接输入命令: pip install pypiwin32 回车

4. Scrapy测试,敲一个基于Scrapy框架的爬虫程序

新建一个Scrapy爬虫项目fourth(因为这是继Python3.5安装的第四篇教程,有兴趣的话请从头看起):在任意目录按住shift+右键->选择在此处打开命令提示符窗口(这里默认为E:\demo),然后输入命令:

E:\demo>scrapy startproject fourth

该命令将会创建包含下列内容的fourth目录:

fourth/
scrapy.cfg
fourth/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...

  

修改项目配置文件settings.py,有些网站会在根目录下放置一个名字为robots.txt的文件,里面声明了此网站希望爬虫遵守的规范,Scrapy默认遵守这个文件制定的规范,即ROBOTSTXT_OBEY默认值为True。在这里需要修改ROBOTSTXT_OBEY的值,找到项目目录(这里为:E:\demo\fourth\fourth)下文件settings.py,更改ROBOTSTXT_OBEY的值为False

引入Gooseeker最新规则提取器模块gooseeker.py(下载地址:https://github.com/FullerHua/gooseeker/tree/master/core),拷贝到项目目录下,这里为E:\demo\fourth\gooseeker.py

创建爬虫模块,进入项目目录E:\demo\fourth下,在此处打开命提示符窗口输入命令:

E:\demo\fourth>scrapy genspider anjuke 'anjuke.com'

该命令将会在项目目录E:\demo\fourth\fourth\spiders下创建模块文件anjuke.py,以记事本打开然后添加代码,主要代码:

# -*- coding: utf-8 -*-
# Scrapy spider 模块
# 采集安居客房源信息
# 采集结果保存在anjuke-result.xml中
import os
import time
import scrapy
from gooseeker import GsExtractor class AnjukeSpider(scrapy.Spider):
name = "anjuke"
allowed_domains = ["'anjuke.com'"]
start_urls = (
'http://bj.zu.anjuke.com/fangyuan/p1',
) def parse(self, response):
print("----------------------------------------------------------------------------")
# 引用提取器
bbsExtra = GsExtractor()
# 设置xslt抓取规则
bbsExtra.setXsltFromAPI("31d24931e043e2d5364d03b8ff9cc77e", "安居客_房源")
# 调用extract方法提取所需内容
result = bbsExtra.extractHTML(response.body) # 打印采集结果
print(str(result).encode('gbk','ignore').decode('gbk'))
# 保存采集结果
file_path = os.getcwd() + "/anjuke-result.xml"
open(file_path,"wb").write(result)
# 打印结果存放路径
print("采集结果文件:" + file_path)

启动爬虫,进入项目目录E:\demo\fourth下,在此处打开命提示符窗口输入命令:

E:\demo\fourth>scrapy crawl anjuke

注:网站若发现抓取时报重定向错误了,尝试修改user-agent后,再启动爬虫爬取数据。操作步骤如下:
1、在爬虫项目目录(这里为E:\demo\fourth\fourth)下创建模块文件middlewares.py,以记事本打开后,添加如下代码:

#-*-coding:utf-8-*-
# 随机更换user agent
import random
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware class RotateUserAgentMiddleware(UserAgentMiddleware):
def __init__(self, user_agent=''):
self.user_agent = user_agent def process_request(self, request, spider):
ua = random.choice(self.user_agent_list)
if ua:
request.headers.setdefault('User-Agent', ua) user_agent_list = [\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"\
"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",\
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",\
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",\
"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",\
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",\
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]

2、修改项目配置文件settings.py,加上如下代码:

DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None,
'fourth.middlewares.RotateUserAgentMiddleware':400,
}

查看保存结果文件,进入Scrapy爬虫项目目录,这里为E:\demo\fourth,找到名称为anjuke-result.xml的文件夹然后打开

5. 总结

安装pypiwin32时碰到了一次超时断开,再次输入命令重新安装才成功,若重复安装都失败可以尝试连接vpn再安装。下一篇《Python爬虫实战:单页采集》将讲解如何爬取微博数据(单页),同时整合Python爬虫程序以Gooseeker规则提取器为接口制作一个通用的采集器,欢迎有兴趣的小伙伴一起交流进步。

6. 集搜客GooSeeker开源代码下载源

GooSeeker开源Python网络爬虫GitHub源

7.修改记录

  • 2017.03.02 补充报重定向错误解决方案

在Python3.5下安装和测试Scrapy爬网站的更多相关文章

  1. Python3.X下安装Scrapy

    Python3.X下安装Scrapy (转载) 2017年08月09日 15:19:30 jingzhilie7908 阅读数:519 标签: python   相信很多同学对于爬虫需要安装Scrap ...

  2. centos7 python3.5 下安装paramiko

    centos7 python3.5 下安装paramiko 安装开发包 yum install openssl openssl-devel python-dev -y 安装pip前需要前置安装setu ...

  3. RedHat Linux 下安装、测试摄像头

    RedHat Linux 下安装.测试摄像头(全文见附件)     随着视频电话的迅速发展我相信大家一定有过在Windows 下安装摄像头的经历,然而大多数 都不支持Linux .我现以罗技摄像头为例 ...

  4. python3 linux下安装

    1.下载 https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 2.安装 上传到linux服务器 #进入上传文件的目录 cd /app/pr ...

  5. Python3.5下安装&测试Scrapy

    1.引言 Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是做爬虫必备基础,本文将对Scrapy的安装作介绍. 2.安装lxml 2.1  下载地址:https://ww ...

  6. win7中python3.4下安装scrapy爬虫框架(亲测可用)

    貌似最新的scrapy已经支持python3,但是错误挺多的,以下为在win7中的安装步骤: 1.首先需要安装Scrapy的依赖包,包括parsel, w3lib, cryptography, pyO ...

  7. 在python3.5下安装scrapy包

    此前scrapy只支持python2.x 但是最新的1.1.0rc1已结开始支持py3了 如果电脑上安装了scrapy的依赖包,诸如lxml.OpenSSL 1.你直接下载Scrapy-1.1.0rc ...

  8. 在Windows10 64位 Anaconda4 Python3.5下安装XGBoost

    系统环境: Windows10 64bit Anaconda4 Python3.5.1 软件安装: Git for Windows MINGW 在安装的时候要改一个选择(Architecture选择x ...

  9. Windows python3.3下安装BeautifulSoup

    首先在官网下载:http://www.crummy.com/software/BeautifulSoup/#Download BeautifulSoup在版本4以上都开始支持python3了,所以就下 ...

随机推荐

  1. win8(64位)下memcache安装时报错“ failed to install service or service already installed” 与安装

    解决办法: 1.找到cmd.exe文件(c:\windows\system32\cmd.exe) 2.右键cmd.exe以管理员方式运行 3.把php_memcache.dll放到php的ext目录: ...

  2. Java学习笔记--泛型

    一个泛型类就是具有一个或者多个类型变量的类. 我们可以只关注泛型,而不会为数据存储的细节而烦恼 . java泛型(一).泛型的基本介绍和使用 http://blog.csdn.net/lonelyro ...

  3. 在C中嵌入汇编

    早前公布了C和汇编混编的温度控制器程序,收到一些朋友的询问,他们无法在自己程序中使用我的18B20的汇编子程序或无法正常通过混编后的程序编译. 其实在KEIL中嵌入汇编的方法很简单.如图一,在C文件中 ...

  4. JSP页面中文参数传递get和post方法分析

    原文 http://developer.51cto.com/art/200907/133499.htm 在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如 ...

  5. uniq详解

    一.简介 报告或删除文件中重复的行. uniq 命令读取由 InFile 参数指定的标准输入或文件.该命令首先比较相邻的行,然后除去第二行和该行的后续副本.重复的行一定相邻.(在发出 uniq 命令之 ...

  6. 性能瞬间飙升!教你如何组RAID0磁盘阵列

    性能瞬间飙升!教你如何组RAID0磁盘阵列 1组建RAID0磁盘阵列之Intel篇回顶部 前言:传统硬盘由于工作原理的限制,在性能上的提升非常缓慢.而固态硬盘价格昂贵,短时间内难以被普通用户接受.因此 ...

  7. 深入浅出Node.js (3) - 异步I/O

    3.1 为什么要异步I/O 3.1.1 用户体验 3.1.2 资源分配 3.2 异步I/O实现现状 3.2.1 异步I/O与非阻塞I/O 3.2.2 理想的非阻塞异步I/O 3.2.3 现实的异步I/ ...

  8. 【转】android TV CTS 4.0.3_r1测试

    原文网址:http://blog.sina.com.cn/s/blog_539ad34301012764.html 做CTS测试已经一月有余,经过不断的摸索,现总结经验,与大家分享. 一.Downlo ...

  9. c++ 06

    一.下标操作符 A a (...); cout << a[3] << endl; cout << a.operator[] (3) << endl; c ...

  10. 捆绑和缩小(BundleConfig.RegisterBundles) 第五章 : MVC中的使用 | {version}用法

    使用捆绑与 ASP.NET MVC 放缩法 在这一节我们将创建 ASP.NET MVC 项目,审查捆绑和缩小.首先,创建一个新的 ASP.NET MVC 互联网项目,命名为MvcBM ,而无需更改任何 ...