大数据人官方⑤群

大数据人|中国大数据第一社区

 找回密码
 注册会员

扫一扫,访问微社区

在Python3.5下安装和测试Scrapy爬网站

2016-10-28 10:32| 发布者: 集搜客GooSeeker| 查看: 950| 评论: 0|原作者: 集搜客网络爬虫|来自: 集搜客社区

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

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

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

  1. 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),然后输入命令:

  1. E:\demo>scrapy startproject fourth

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

  1. fourth/
  2.     scrapy.cfg
  3.     fourth/
  4.         __init__.py
  5.         items.py
  6.         pipelines.py
  7.         settings.py
  8.         spiders/
  9.             __init__.py
  10.             ...



修改项目配置文件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下,在此处打开命提示符窗口输入命令:

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

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

  1. # -*- coding: utf-8 -*-
  2. # Scrapy spider 模块
  3. # 采集安居客房源信息
  4. # 采集结果保存在anjuke-result.xml中
  5. import os
  6. import time
  7. import scrapy
  8. from gooseeker import GsExtractor

  9. class AnjukeSpider(scrapy.Spider):
  10.     name = "anjuke"
  11.     allowed_domains = ["'anjuke.com'"]
  12.     start_urls = (
  13.         'http://bj.zu.anjuke.com/fangyuan/p1',
  14.     )

  15.     def parse(self, response):
  16.         print("----------------------------------------------------------------------------")
  17.         # 引用提取器
  18.         bbsExtra = GsExtractor()
  19.         # 设置xslt抓取规则
  20.         bbsExtra.setXsltFromAPI("31d24931e043e2d5364d03b8ff9cc77e", "安居客_房源")
  21.         # 调用extract方法提取所需内容
  22.         result = bbsExtra.extractHTML(response.body)
  23.         
  24.         # 打印采集结果
  25.         print(str(result).encode('gbk','ignore').decode('gbk'))
  26.         # 保存采集结果
  27.         file_path = os.getcwd() + "/anjuke-result.xml"
  28.         open(file_path,"wb").write(result)
  29.         # 打印结果存放路径
  30.         print("采集结果文件:" + file_path)

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

  1. E:\demo\fourth>scrapy crawl anjuke

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

  1. #-*-coding:utf-8-*-
  2. # 随机更换user agent
  3. import random
  4. from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware

  5. class RotateUserAgentMiddleware(UserAgentMiddleware):
  6.     def __init__(self, user_agent=''):
  7.         self.user_agent = user_agent
  8.   
  9.     def process_request(self, request, spider):
  10.         ua = random.choice(self.user_agent_list)
  11.         if ua:
  12.             request.headers.setdefault('User-Agent', ua)

  13.     user_agent_list = [\
  14.         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"\
  15.         "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",\
  16.         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",\
  17.         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",\
  18.         "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",\
  19.         "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",\
  20.         "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",\
  21.         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
  22.         "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\
  23.         "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",\
  24.         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\
  25.         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\
  26.         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
  27.         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
  28.         "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\
  29.         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",\
  30.         "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",\
  31.         "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
  32. ]
复制代码

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

  1. DOWNLOADER_MIDDLEWARES = {  
  2.             'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None,  
  3.             'fourth.middlewares.RotateUserAgentMiddleware':400,  
  4. }
复制代码

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

5. 总结

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

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

GooSeeker开源Python网络爬虫GitHub源

7. 修改记录

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

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

关闭

站长推荐上一条 /2 下一条


id="mn_portal" >首页Portalid="mn_P18" onmouseover="navShow('P18')">应用id="mn_P15" onmouseover="navShow('P15')">技术id="mn_P37" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">前沿id="mn_P36" onmouseover="navShow('P36')">宝箱id="mn_P61" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">专栏id="mn_P65" >企业id="mn_forum_2" >社区BBSid="mn_Nd633" >导航id="mn_Nbe89" >通讯录id="mn_N4033" >赞+1 折叠导航 关注微信 关注微博 关注我们

QQ|广告服务|关于我们|鄂ICP备14012176号-2|Archiver|手机版|小黑屋|大数据人    

GMT+8, 2017-9-26 20:41 , Processed in 0.509896 second(s), 22 queries .

Powered by 小雄! X3.2

© 2014-2016 bigdataer Inc.

返回顶部