PySplider 爬取简单数据

最近刚开始正式的接触Python,虽然原来也有一些了解,但还是没有实际进行操作。就写几个练练手

比较知名的是Scrapy 和PySpider。

区别:

PySpider上手更简单,操作更加简便,增加了 WEB 界面,开发效率高,集成了phantomjs,可以用来处理复杂的js渲染的页面。

Scrapy自定义程度高,比PySpider更底层一些,适合学习研究,需要学习的相关知识多,不过自己拿来研究分布式和多线程等等是非常合适的。

  1. PySplider安装配置

1、安装pip

pip是python的包管理工具 类似RedHat里面的yum 通过pip可以快速下载安装python软件 隐藏了背后复杂的下载安装的过程

访问https://pypi.python.org/pypi/pip#downloads

下载pip安装包

解压pip-9.0.1.tar.gz

该目录下执行 python setup.py install----在解压该安装包的目录,需要cd操作

PySplider 爬取简单数据

更换目录户后:

PySplider 爬取简单数据

将python安装目录下的Scripts配置到PATH环境变量

2、安装phantomjs

phantomjs是一个浏览器内核程序,可以在爬虫开发过程中,模拟浏览器运行js,简化js处理过程

访问http://phantomjs.org/download.html

下载对应版本phantomjs

解压phantomjs-2.1.1-windows.zip

将其bin目录配置到PATH环境变量中                

3、使用pip安装pyspider

pip install pyspider

4、运行pyspider

pyspider all

PySplider 爬取简单数据

5、通过浏览器访问pyspider

http://localhost:5000

6、PySpider的使用

PySpider语法---官方地址

http://docs.pyspider.org/en/latest/

 

下面的操作将在可视化界面进行操作,登录localhost:5000

PySplider 爬取简单数据

直接创建:点击右边的create,进入后在右边编程

获取CSDN的推荐

PySplider 爬取简单数据

 

 

获取上图中的架构推荐,并将数据保存到本地----注意:此处要先在本地指定保存位置:我的是D:\\CSDN文件夹,要先创建好


	#!/usr/bin/env python
	# -*- encoding: utf-8 -*-
	# Created on 2019-01-21 17:10:28
	# Project: CSDN1
	
	from pyspider.libs.base_handler import *
	import time
	import os
	
	class Handler(BaseHandler):    
	    crawl_config = {
	    }
	    def __init__(self):
	        self.base_dir ="D:\\CSDN"
	
	    @every(minutes=24 * 60)
	    def on_start(self):
	        self.crawl('https://www.csdn.net/nav/arch', callback=self.index_page,validate_cert=False)
	
	    @config(age=10 * 24 * 60 * 60)
	    def index_page(self, response):          
	        for each1 in response.doc('.title h2 a').items():
	            print(each1.text())#标题
	            print(each1.attr("href")+'\n')#链接
	            riqi=time.strftime("%Y-%m-%d")
	            name=each1.text().encode("gbk")
	            lianjie=each1.attr("href")
	            #创建文件夹
	            mk_dir=self.base_dir+"\\"+riqi
	            if not os.path.exists(mk_dir):
	                os.mkdir(mk_dir)
	            #保存文本文件            
	            
	            try:
	                name_file=open(mk_dir+"\\"+name+".txt","w")
	                name_file.write(lianjie)#写入链接
	            except IOError:
	                print("shout")  
	            try:
	                name_file.flush()
	            except ValueError:
	                print("8848")
            name_file.close()

                try:
                    name_file=open(mk_dir+"\\"+name+".txt","w")
                    name_file.write(lianjie)#写入链接
                except IOError:----------------------------------------此处为了防止有过长的标题导致转码为gbk格式存到本地出现=溢出错误(开始真的没有想到会有这种标题的出现,直到看了标题。。。。想找也找不到,真是可遇不可求,受不鸟。。。)
                    print("shout")  
                try:
                    name_file.flush()---------------------------------防止数据流出啊新数显异常,一般是没有
                except ValueError:
                    print("8848")

结果:

编辑好后点击save保存,点击左边的run开始运行

PySplider 爬取简单数据

点击这个follows

继续PySplider 爬取简单数据

PySplider 爬取简单数据

成功了

查看本地:

PySplider 爬取简单数据

 

PySplider 爬取简单数据

 

里面的txt文件保存了以上的链接