爬虫—scrapy框架(一)基本安装和使用

目录

安装

Windows环境下安装

annaconda 下安装

项目

创建项目

报错处理

创建项目文件

项目文件spider对象

scrapy shell调试

Scrapy选择器


参考网站:http://www.scrapyd.cn/

官方文档:https://scrapy-chs.readthedocs.io/zh_CN/0.24/

安装

Windows环境下安装

1、下载:在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载对应的Twisted的版本文件

下载版本文件注意当前python的版本和位数(Twisted文件位数指的是python位数,而不是本机位数),python版本检查:python --version位数检查:python -c "import struct; print(struct.calcsize('P') * 8)"

2、命令行中切换下载的Twisted文件目录下,然后执行命令:pip install Twisted文件名

 

3、Pip install scrapy

annaconda 下安装

1.安装conda

conda旧版本 : https://docs.anaconda.com/anaconda/packages/oldpkglists/

安装方法: https://blog.csdn.net/ychgyyn/article/details/82119201

2. 安装scrapy  : conda install scrapy

项目

创建项目

使用scrapy startproject 项目名  :scrapy startproject <project_name>  [project_dir]     ——— "<>"表示必填 ,"[]"表示可选,创建项目可以切换到对应目录下进行创建,写一个名字创建的项目外文件夹和项目文件夹名字一样,写两个名字:scrapy startproject 项目文件夹名 项目外文件夹名。

报错处理

1、lxml版本冲突:ImportError: cannot import name 'etree' from 'lxml'

原因:之前安装过lxml,与现在安装的scrapy框架版本冲突。解决方法,首先卸载原来的lxml,重新安装lxml,python会自动检测和安装对应版本的lxml。

2、项目名不符合规范,项目名的命名规则同python的变量名命:项目名称必须以字母开头,只能包含字母、数字和下划线

创建成功后的项目文件目录结构

创建项目文件

先cd到项目文件夹下,然后使用命令创建:scrapy genspider [options] <name> <domain>,创建的项目文件自动存放在项目/spiders下,<name>是爬虫文件名,<domain>是域名(url)

项目文件spider对象

spider中的属性和方法

class DoubanSpider(scrapy.Spider):  # 继承scrapy.Spider模板类
    name = 'douban'  # spider的名字,必须有,且唯一,用来唯一标记每一个爬虫文件
    allowed_domains = ['movie.douban.com']  # 用于限制爬虫爬去网站的域名(可以添加多个),对不是该域名下的网站进行过滤
    start_urls = ['https://movie.douban.com/top250']  # 初始的url列表

parse(self, response)方法用来生成一个Response对象

    def parse(self, response):
        '''
        每个初始url完成之后被调用。这个函数要完成两个功能:
        1、解析响应,封装成item对象并返回这个对象
        2、提取新的需要下载的url,创建新的request,并返回它

        提取对象内容的方法:
        get():提取对象中的第一个内容,返回字符串
        getall():提取对象中所有内容,返回的所有对象的列表
        extract():同getall()方法
        extract_first():同get()方法
        re():正则使用,返回所有满足条件的结果列表
        re_first():正则使用,返回的是满足条件第一个元素
        '''

scrapy.Request()方法参数

class Request(object_ref):

    def __init__(self, url, callback=None, method='GET', headers=None, body=None,
                 cookies=None, meta=None, encoding='utf-8', priority=0,
                 dont_filter=False, errback=None, flags=None, cb_kwargs=None):

主要使用参数

url参数:响应的url

callback:回调函数

meta:构建Request对象时,可以将要传递给响应处理函数的信息通过meta参数传入:响应处理函数处理响应时,通过response.meta将信息取出

scrapy shell调试

scrapy shell [option] [url|file]   ,url 是想要爬取的网址,分析本地文件时一定要带上路径,scrapy shell默认当作url

快捷方法

  • shelp()
  • fetch(url[,redirect=True])
  • fetch(request)
  • view(response)  

Scrapy选择器

支持xpath、css、re ,返回的对象为列表

xpath()   基于xpath的语法规则      ——response.xpath()

css()  基于css选择器的语法规则        ——response.css()

re()方法使用正则表达式提取数据的方法。     re_first()用来返回第一个匹配的字符串,使用re()方法时需要将其放在xpath和css选择器后面使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值