由于工作需要在一周内学习了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 - 打开浏览器,输入:http://localhost:5000/
- 登陆成功界面
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
- 调试.png
-
从上到下执行,crawl之后在callback函数中再次解析
程序入口.png -
点击follow 可以查看单个具体爬虫信息,对于index_page里的内容,也就是第一个crawl之后callback函数的位置
- 想调试那页就点击绿色框白色run箭头,可以对应url中的内容进行对照
-
每一页的信息爬取出来
- 一共有23个图片信息href成功爬取
-
解析每个图片跳转页之后的内容标签
- 查看左侧打印结果是否和自己想解析的相同.png
-
结果
- run一下 查看结果是否都爬下来了
- 查看result
-
结果看右上角 可以直接下载本地 很爽 直接做数据分析用
- 效果还是不错的
-
代码思路:
- 1.翻页:拼接url数组 循环crawl
- 2.解析a标签获取href属性
- 3.每获取到一个a标签的href都再crawl一次,解析每个图片里的具体信息
- 4.结果都在detail_page中还可以进一步解析,return决定的是最终Result中出现的字段
网友评论