哆啦A梦 50周年应援

scrapy的安装,scrapy创建项目

简要:


 scrapy的安装

# 1)pip install scrapy -i https://pypi.douban.com/simple(国内源)

一步到位

# 2) 报错1: building 'twisted.test.raiser' extension
  # error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++
  # Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
# 解决1
  # http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
  # Twisted‑20.3.0‑cp37‑cp37m‑win_amd64.whl
  # cp是你的python版本
  # amd是你的操作系统的版本

  # 下载完成之后 使用pip install twisted的路径 安装

  # 切记安装完twisted 再次安装scrapy

  pip install scrapy -i https://pypi.douban.com/simple

# 3) 报错2:提示python -m pip install --upgrade pip
  # 解决2 运行python -m pip install --upgrade pip

# 4) 报错3 win32的错误
  # 解决3 pip install pypiwin32

# 5)使用 anaconda

 

scrapy创建项目

  cmd 到项目文件夹中

  或者直接拖入

如果返回没有权限,使用管理员运行cmd

1.创建scrapy项目:
  终端输入 scrapy startproject 项目名称

scrapy startproject scrapy_baidu

scrapy_baidu\下的文件夹

2.项目组成:
  spiders 
    __init__.py       
    自定义的爬虫文件.py —>由我们自己创建,是实现爬虫核心功能的文件
  __init__.py
  items.py —>定义数据结构的地方,是一个继承自scrapy.Item的类
  middlewares.py —>中间件 代理
  pipelines.py —>管道文件,里面只有一个类,用于处理下载数据的后续处理
    默认是300优先级,值越小优先级越高(1‐1000)
  settings.py —>配置文件 比如:是否遵守robots协议,User‐Agent定义等
3.创建爬虫文件:
    1)跳转到spiders文件夹 cd 目录名字/目录名字/spiders
    2)scrapy genspider 爬虫名字 网页的域名
  爬虫文件的基本组成:
    继承scrapy.Spider类
      name = 'baidu' —> 运行爬虫文件时使用的名字
      allowed_domains —> 爬虫允许的域名,在爬取的时候,如果不是此域名之下的
  url,会被过滤掉
      start_urls —> 声明了爬虫的起始地址,可以写多个url,一般是一个
      parse(self, response) —> 解析数据的回调函数
        response.text —> 响应的是字符串
        response.body —> 响应的是二进制文件
        response.xpath()—> xpath方法的返回值类型是selector列表
        extract() —> 提取的是selector对象的是data
        extract_first() —> 提取的是selector列表中的第一个数据 
4.运行爬虫文件:scrapy crawl baidu
  scrapy crawl 爬虫名称
  注意:应在spiders文件夹内执行 

settings.py

spiders\baidu.py

import scrapy

class BaiduSpider(scrapy.Spider):
    # 爬虫的名字  用于运行爬虫的时候 使用的值
    name = 'baidu'
    # 允许访问的域名
    allowed_domains = ['http://www.baidu.com']
    # 起始的url地址  指的是第一次要访问的域名
    # start_urls 是在allowed_domains的前面添加一个http://
    #             在 allowed_domains的后面添加一个/
    start_urls = ['http://www.baidu.com/']

    # 是执行了start_urls之后 执行的方法   方法中的response 就是返回的那个对象
    # 相当于 response = urllib.request.urlopen()
    #       response  = requests.get()
    def parse(self, response):
        print('你好世界')
posted @ 2021-11-12 15:38  秋泊ソース  阅读(275)  评论(0编辑  收藏  举报