简要:


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('你好世界')

最新文章

  1. Android 2016新技术
  2. UISegmentedControl和UIStepper的使用
  3. C语言补码作用
  4. xib与nib的区别
  5. OpenGL的gluPerspective和gluLookAt的关系[转]
  6. 2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数
  7. js日历,使用datepicker.js,ui.core.js,jquery-1.7.1.js
  8. 移动开发平台-应用之星app制作教程
  9. 深入理解java String 及intern
  10. vue 基础-->进阶 教程(3):组件嵌套、组件之间的通信、路由机制
  11. 基于以太坊开发的类似58同城的DApp开发与应用案例
  12. [HEOI2015]小Z的房间
  13. Chrome 的 PNaCl 还活着么?
  14. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 对外不要提供Delete方法加强软件的安全性
  15. Pyhton基础知识(一)
  16. 循序渐进学.Net Core Web Api开发系列【0】:序言与目录
  17. linux环境mysql的安装主从关系的配置
  18. xv6/sh.c
  19. 【cf490】D. Chocolate(素数定理)
  20. CC3200-LAUNCHXL仿真器驱动异常(未完成)

热门文章

  1. Zookeeper原理系列-Paxos协议的原理和Zookeeper中的应用分析
  2. 多项目如何高效协同合作 | springcloud系列之bus消息总线
  3. 基于PaddleOCR实现AI发票识别的Asp.net Core应用
  4. 6.堆和GC
  5. 如何在 Serverless K8s 集群中低成本运行 Spark 数据计算?
  6. Java初步学习——2021.10.05每日总结,第五周周三
  7. SpringBoot-集成SpringSecurity
  8. javascript-原生-函数
  9. Java:并发笔记-09
  10. OO_JAVA_四个单元的总结