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

news/2024/5/15 0:15:04/文章来源:https://blog.csdn.net/fullerhua/article/details/52953811

这里写图片描述

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.cfgfourth/__init__.pyitems.pypipelines.pysettings.pyspiders/__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 osimport timeimport scrapyfrom gooseeker import GsExtractorclass 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_agentdef 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 补充报重定向错误解决方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_884153.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

京东网站爬取 华为手机的 评论 以词云的方式运行

相关的包 import pymysql import pymysql from wordcloud import WordCloud import jieba import pygal 1 从数据库把所有用户评论查出 def get_comments(): # 连接数据库 # 读表 连接的mysql 数据库, mysql_con pymysql.connect(host‘127.0.0.1’, port3306, u…

不得不看的五个堪称神器的在线网站工具

需求多了,要下载的软件也就变多了。对于内存不多的人儿来说,用一个工具就下一个软件真的是很难。好在有一些好用的网页工具,为低内存的人解决一世纪难题。本文整理了5个在线神器,快来get! MindMaster在线思维导图 在线…

html页面中调用指定浏览器并访问指定网站(或者调用指定exe程序【类似于网页版百度网盘启用本地百度网盘终端程序】)

html页面中调用指定浏览器并访问指定网站(或者调用指定exe程序【类似于网页版百度网盘启用本地百度网盘终端程序】 一、业务需求二、思路扩展三、实现过程 一、业务需求 在某个页面中点播视频,因为兼容性问题必须由IE浏览器点播,因此当用户通…

淘宝网站的架构演进

基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。 1)什么是分布式? 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分…

推荐一个不错的在线文档分享网站-Scribd,陆续分享我的电子藏书

无意中发现一个不错的网站,和大家分享。网址是www.scribd.com,界面是英文的。Scribd 是一个在线文档上传以及分享的社区;它允许用户上传 .pdf, .doc, .ppt, .xls, .txt 等多种格式的文档文件,并以Slideshow的形式展示给用户&#…

网站架构之缓存应用(1)概念篇

网站缓存这个话题并不新颖,但是能否将它用好,可是一门学问,同一件工具在不同人的手中会做出不同的事情来。这里我来分享总结下我对于网站架构中缓存应用的一些看法和经验,大家有好的想法可以补充。 第一:缓存…

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

Asp.Net 网站优化 数据库优化措施 使用主从库(上)

网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求;这时候我们可以考虑使用主从库。 主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作最新数据的查询操…

51la网站计数器

时间没有等我,可是我发现我自己在等自己 不知什么时候,我突然发现,最近我好像一直在停滞不前,我不能这样了 要找到从前的我,慢慢的静下心来开始学习吧。 弄了一个网站计数的东东放在下面,也计数一下自己的博…

网站优化:测试网站速度的8款免费工具推荐

网站的加载速度是决定网站成败的重要因素,值得站长特别关注。原因很简单,没有人愿意为了打开一个网页而等老半天,换句话说,如果你的网站打开速度很慢,将流失大量的访客,甚至出现多米诺效应的不良影响&#…

快速用Discuz搭建论坛网站教程

Discuz! 是全球成熟度最高、覆盖率最大的论坛软件系统之一。自 2001 年 6 月面世以来,Discuz! 已拥有 15 年以上的应用历史和 200 多万网站用户案例。目前,Discuz! 已经发展成为一个以社区为基础的专业建站平台,让论坛(BBS&#x…

几个简单步骤可以提高网站浏览体验

STEP 1确定网站定位 你的网站定位是要以企业形象官网为主,或是以单纯贩售商品的购物网站,还是要跟使用者做互动活动的网站? 每个网站的目的都不尽相同,形象官网,可能需要着重于品牌理念、品牌故事、公司介绍等等&#…

中小企业怎么选择适合自己的网站建设公司_企业全网营销怎么做

做营销推广接近8年的时间,在这个过程中,经常会和一些企业站长和老板交流;很多时候老板都是在关注我的网站关键词排名怎么能够快速上首页,有没有好的方法,站长主要关注的是文章内容怎么写,怎么原创&#xff…

【全套攻略】关于建站、服务器、云虚拟主机你想知道的都在这里!

将普惠进行到底!全民云计算,云服务器30/月 共享虚拟主机普惠版,特价6元/年 学生专享 | 云翼计划1折特惠,9.9/月 9款企业免费套餐,最长6个月免费使用 除了特惠大礼包,还为大家准备了建站全套攻略。在建站这条…

一步搭建phpwind网站

首先我们把服务器停止,然后更换系统盘 选择我们的网站phpwind 在安全组配置添加80端口 打开网页安装即可 阅读原文 转载于:https://my.oschina.net/u/3471671/blog/914753

帮程序员减压放松的10个良心网站

阅读全文 程序员们工作之余,不妨放下微博跟朋友圈,今天推荐的网站,利用代入感强的图片与音频,迅速帮你抹平焦虑,获得平和心态,特别献需求改千遍的程序员们。 1.Calm 这是同类型中最火的网站了,站…

真材实料的分布式资料-试读《大型分布式网站架构设计与实践》有感

读后感 逐字逐句看完《大型分布式网站架构设计与实践》第2章,意犹未尽!如标题所言,这是一本“真材实料的分布式资料”,它与我看过的分布式书籍(如《大型网站系统与Java中间件实践》)不同,本书重…

我的V360i手机软件、游戏以及手机网站等

我的V360i手机软件、游戏以及手机网站等 作者:辛晶晶 日期:2006-11-27 字体大小: 小 中 大 在手机论坛下载了几个软件和游戏移动英汉双向词典、列车时刻表;打砖块、极品飞车2、雷电、泡泡龙、连连看。下载地址http://xjj.name/download/打砖块.rar http://xjj.name…

网站性能优化实战—从12.67s到1.06s的故事

本文是对之前同名文章的修正,将所有webpack3的内容更新为webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升。 0.引言 作为互联网项目,最重要的便是用户体验。在举国“互联网”的热潮中&…

一些实用的前端框架网站分享

使用前端web框架以及插件说明 2.1选择前端web框架,我找了很多框架,以前学过自学过bootstrap觉得对于没有前端web设计经验的我来说很方便,就在极客学院自学了前端,然后找了一些相关的前端免费教程看了一下,慕课网也有部…