pyspider爬虫的基本使用

由于工作需要在一周内学习了pyspider的使用:
1.安装过程坑之多,小坑多一点,我用的是python2.x因为我3.x没安装成功一个库

我安装的时候用pip python2.x的坑少一点3.x的相关库安装lxml wheel32位 64位的选择;Path的填写都是需要注意的东西;具体安装过程不赘述了;有很多大神写好了步骤,推荐:静觅博客

2.pyspider是在一个网页里,所以敲代码时候是不会有函数提示的哦哦!
3.phantomJS还没有成功尝试,因为我的js很渣 抓包时候不会看js代码(持续学习中)

1.启动pyspider

  • 命令行里输入pyspider


    pyspider爬虫的基本使用_第1张图片
    启动pyspider
  • 打开浏览器,输入:http://localhost:5000/
  • pyspider爬虫的基本使用_第2张图片
    登陆成功界面

2.使用

创建项目

  • 1.点击右侧蓝色“create”按钮 创建项目
  • 2.项目名称最好都填“英文”,以防编码啥的问题
  • 3.url我习惯性不填 都在代码里改

制定一个小需求

  • 目标源:爬取https://reeoo.com/
  • 请求方式:get请求
  • 获取内容:图片、标题、作者、分类、超链接等:反正就是可以获取什么就爬什么,全当练习

代码

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2018-08-02 16:51:06
# Project: text

from pyspider.libs.base_handler import *

url = 'https://reeoo.com/page/'

class Handler(BaseHandler):
    crawl_config = {
         'itag':'2324'#首次run执行不需要写;重复run需要填写
    }

    @every(minutes=24 * 60)
    def on_start(self):
        # i = 1
        for i in range(1,168):
            pageNum = str(i)
            urlStr = url + pageNum
            print (urlStr)
            self.crawl(urlStr , callback=self.index_page, validate_cert=False)
         
        
    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('div[class="thumb"]').items():
            detail_url = each('a').attr.href
            # print (detail_url)
            self.crawl(detail_url, callback=self.detail_page,validate_cert=False)

    @config(priority=2)
    def detail_page(self, response):
        # 1.获取设计标题
        header = response.doc('body > article > section > header')
        # print header
        title = header('h1').text()
        
        # 2.获取设计的标题组
        tags = []
        for each in header.items('a'):
            tags.append(each.text())
            # print (each,tags)
            
        # 3.获取设计的简介
        content = response.doc('div[id="post_content"]')
        description = content('blockquote > p').text()
        
        # 4.获取设计网址的超链接
        website_url = content('a').attr.href
            
        # 5.获取设计图片组的网址
        image_url_list = []
        for each in content.items('img[data-src]'):
            image_url_list.append(each.attr('data-src'))
        
        
        
        return {
            "title": title,
            "tags": tags,
            "description": description,
            "website_url": website_url,
            "image_url_list": image_url_list,
        }


调试和结果展示

  • 调试:点击run

  • pyspider爬虫的基本使用_第3张图片
    调试.png
  • 从上到下执行,crawl之后在callback函数中再次解析


    pyspider爬虫的基本使用_第4张图片
    程序入口.png
  • 点击follow 可以查看单个具体爬虫信息,对于index_page里的内容,也就是第一个crawl之后callback函数的位置

  • pyspider爬虫的基本使用_第5张图片
    想调试那页就点击绿色框白色run箭头,可以对应url中的内容进行对照
  • 每一页的信息爬取出来

  • pyspider爬虫的基本使用_第6张图片
    一共有23个图片信息href成功爬取
  • 解析每个图片跳转页之后的内容标签

  • pyspider爬虫的基本使用_第7张图片
    查看左侧打印结果是否和自己想解析的相同.png
  • 结果

  • pyspider爬虫的基本使用_第8张图片
    run一下 查看结果是否都爬下来了
  • pyspider爬虫的基本使用_第9张图片
    查看result
  • 结果看右上角 可以直接下载本地 很爽 直接做数据分析用

  • pyspider爬虫的基本使用_第10张图片
    效果还是不错的
  • 代码思路:

    • 1.翻页:拼接url数组 循环crawl
    • 2.解析a标签获取href属性
    • 3.每获取到一个a标签的href都再crawl一次,解析每个图片里的具体信息
    • 4.结果都在detail_page中还可以进一步解析,return决定的是最终Result中出现的字段

你可能感兴趣的:(pyspider爬虫的基本使用)