Scrapy爬虫框架的安装和使用
Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted 14.0、lxml 3.4和pyOpenSSL 0.14。在不同的平台环境下,它所依赖的库也各不相同,所以在安装之前,最好确保把一些基本库安装好。
官方网站:https://scrapy.org
官方文档:https://docs.scrapy.org
PyPI:https://pypi.python.org/pypi/Scrapy
GitHub:https://github.com/scrapy/scrapy
中文文档:http://scrapy-chs.readthedocs.io
一、安装Scrapy
如果你的Python是使用Anaconda安装的
conda install Scrapy
Windows下的安装
下载安装pyOpenSSL https://pypi.python.org/pypi/pyOpenSSL#downloads
下载安装Twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下载安装PyWin32 https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/
pip3 install Scrapy
CentOS和Red Hat
sudo yum groupinstall -y development tools
sudo yum install -y epel-release libxslt-devel libxml2-devel openssl-devel
pip3 install Scrapy
Ubuntu、Debian和Deepin
sudo apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev
pip3 install Scrapy
二、scrapy 的使用
1、’创建项目
下面的命令可以创建一个Scrapy爬虫项目,它为我们规定了标准的项目格式。
scrapy startproject myproject [project_dir] #可以直接添加路径,也可以去你的工作目录省略路径选项
创建后用ide工具打开,项目结构:spiders模块中放置所有爬虫,scrapy.cfg是项目的全局配置文件,其余文件是Scrapy的组件。
2、创建爬虫
使用下面的命令可以创建一个爬虫,爬虫会放置在spider模块中。
scrapy genspider mydomain mydomain.com #需要进入项目目录,后面是爬虫名字和起始页面
下面代码是生成的爬虫具有基本的结构,我们也可以自己在此基础上编写代码。
# -*- coding: utf-8 -*-
import scrapy class MydomainSpider(scrapy.Spider):
name = "mydomain"
allowed_domains = ["mydomain.com"]
start_urls = ['http://mydomain.com/'] def parse(self, response):
pass
爬虫起启动后会将start_urls中的网址交给一个start-requests的函数执行,然后返回一个response给parse函数,接下来就是自己写了。
如果起始页面是有多个,可以直接写到start_urls中,还可以重写start-requests函数,自己将网址写好后requests提交一个response交给parse,比如很多的网站的多个栏目页面的网址是固定的,就可以少请求一次,少分析一次网页。
3、IDE默认没有scrapy项目,为了方便调试,我们需要新建一个脚本来执行scrapy项目,在项目的目录下新建一个xxx.py的文件,一般我们取名main,或者run,里面写上下面代码,我们的项目就可以在Ide调试了。
from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'mydomain']) #mydomain是爬虫的名字
4、防反爬虫,你懂得。不管网站有没有反爬,这一步最好都做,特别是需要长期爬的网站,也是对网站基本的尊重。这里主要是user-agent,和代理ip和cookie。
user-agent:可以自己写一个列表循环随机取,也可以安装一个包pip3 install fake-useragent,middlewares.py添加
from fake_useragent import UserAgent #这是一个随机UserAgent的包,里面有很多UserAgent
class RandomUserAgentMiddleware(object):
def process_request(self, request, spider):
ua = UserAgent()
request.headers.setdefault('User-Agent', ua.random) #这样就是实现了User-Agent的随即变换
settings.py的DOWNLOADER_MIDDLEWARES添加两条
DOWNLOADER_MIDDLEWARES = {
'lianjia.middlewares.RandomUserAgentMiddleware': 543,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None, #这里要设置原来的scrapy的useragent为None,否者会被覆盖掉
}
代理ip,很重要,可以用免费的,可以买,也可以自建,middlewares.py添加
class RandomProxyMiddleware(object):
'''动态设置ip代理'''
def process_request(self,request,spider):
get_ip = ip #ip为你的代理ip
request.meta["proxy"] = "http://" + get_ip + ':端口' #你的代理方式,ip地址和端口
settings.py的DOWNLOADER_MIDDLEWARES添加一条
DOWNLOADER_MIDDLEWARES = {
'lianjia.middlewares.RandomProxyMiddleware': 542, #代理ip
}
cookie:如果需要使用的,请使用cookie池,如果不需要就关了,settings.py里面
COOKIES_ENABLED = False
还有一点就是爬取过程中的sleep时间最好不要是固定的,比如0-5秒,随机的。
Scrapy爬虫框架的安装和使用的更多相关文章
- Scrapy爬虫框架(1)--安装配置与常用命令
安装与配置 Scrapy有几个安装依赖,一般来说可以直接pip install scrapy,这个过程会自动下载安装其他几个依赖. 上述安装方法不成功,则需要手动安装依赖包 步骤 安装 lxmlpip ...
- Scrapy爬虫框架的安装
Scrapy框架是我在Windows中遇到的最难安装的第三方库,一直不想写这篇博客,但碰巧今天重装了系统,这正好是个机会? 1.安装pywin32:https://sourceforge.net/pr ...
- Python之Scrapy爬虫框架安装及简单使用
题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...
- python3.7.1安装Scrapy爬虫框架
python3.7.1安装Scrapy爬虫框架 环境:win7(64位), Python3.7.1(64位) 一.安装pyhthon 详见Python环境搭建:http://www.runoob.co ...
- 安装scrapy 爬虫框架
安装scrapy 爬虫框架 个人根据学习需要,在Windows搭建scrapy爬虫框架,搭建过程种遇到个别问题,共享出来作为记录. 1.安装python 2.7 1.1下载 下载地址 1.2配置环境变 ...
- Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
(1).前言 动态页面:HTML文档中的部分是由客户端运行JS脚本生成的,即服务器生成部分HTML文档内容,其余的再由客户端生成 静态页面:整个HTML文档是在服务器端生成的,即服务器生成好了,再发送 ...
- scrapy爬虫框架学习笔记(一)
scrapy爬虫框架学习笔记(一) 1.安装scrapy pip install scrapy 2.新建工程: (1)打开命令行模式 (2)进入要新建工程的目录 (3)运行命令: scrapy sta ...
- Python爬虫教程-31-创建 Scrapy 爬虫框架项目
本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环 ...
- 手把手教你如何新建scrapy爬虫框架的第一个项目(上)
前几天给大家分享了如何在Windows下创建网络爬虫虚拟环境及如何安装Scrapy,还有Scrapy安装过程中常见的问题总结及其对应的解决方法,感兴趣的小伙伴可以戳链接进去查看.关于Scrapy的介绍 ...
随机推荐
- 六个好习惯让你的PCB设计更优
PCB layout工程师每天对着板子成千上万条走线,各种各样的封装,重复着拉线的工作,也许很多人会觉得是很枯燥无聊的工作内容.看似软件操作搬运工,其实设计人员在过程中要在各种设计规则之间做取舍,兼顾 ...
- STM32的串口通信
本篇文章主要讲解一个在开发过程中经常使用到的一个外设---串口. 串口是绝大多数 MCU 中不可或缺的一个外设,同时也是我们开发中经常使用的一种调试手段,所以在STM32的学习中,串口的配置使用也是必 ...
- Machine learning(4-Linear Regression with multiple variables )
1.Multiple features So what the form of the hypothesis should be ? For convenience, define x0=1 At t ...
- 计算机网络之网络层IP组播(IGMP、组播路由选择协议、组播地址)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105318560 学习课程:<2019王道考研计算机网络> 学习目的 ...
- Python课程笔记(十)
不陌生,之前学习一个开源SpringBoot项目,Mysql5.5更换到5.7搞得头疼. 数据库连接的坑之前写的IDEA系列连接会遇到的问题.课程代码 今天上课就主要学习了python如何连接mysq ...
- 转载:使用Xilinx IP核进行PCIE开发学习笔记(一)简介篇
https://zhuanlan.zhihu.com/p/32786076 最近接触到一个项目,需要使用PCIE协议,项目要求完成一个pcie板卡,最终可以通过电脑进行通信,完成电脑发送的指令.这当中 ...
- Obsidian中使用Calendar插件快捷建立日记、周记
Calendar插件 Calendar插件是我第一个安装使用的插件,插件可以帮助我们很便捷的记录每天的工作 插件效果图 插件下载 下载地址 插件安装 # Obsidian如何手动下载并安装插件-以看板 ...
- 问题解决:补充安装c语言的库函数和系统调用man手册
问题解决:补充安装c语言的库函数和系统调用man手册 今日份麻麻~上课时大家的Ubuntu都可以通过man查到关于stat的库函数,但是我的Kali查出来是这样: 询问老师之后得知需要去安装相 ...
- Linux高级命令及mysql数据安装
Linux系列--高级命令--mysql数据库安装 数据库是用来组织.存储和管理数据的仓库 1.安装数据库:执行命令yum -y install mysql -server 2.启动数据库:安装完毕, ...
- 这些年我@yangbodong22011参与的开源
2020年第一天,水一篇博客,对新年起码的尊重.这里记录下我参与的开源项目情况. Talk is cheap. Show me the code Linus Torvalds Jedis PR:htt ...