PySplider 爬取简单数据
最近刚开始正式的接触Python,虽然原来也有一些了解,但还是没有实际进行操作。就写几个练练手
比较知名的是Scrapy 和PySpider。
区别:
PySpider上手更简单,操作更加简便,增加了 WEB 界面,开发效率高,集成了phantomjs,可以用来处理复杂的js渲染的页面。
Scrapy自定义程度高,比PySpider更底层一些,适合学习研究,需要学习的相关知识多,不过自己拿来研究分布式和多线程等等是非常合适的。
- 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操作
更换目录户后:
将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
5、通过浏览器访问pyspider
6、PySpider的使用
PySpider语法---官方地址
http://docs.pyspider.org/en/latest/
下面的操作将在可视化界面进行操作,登录localhost:5000
直接创建:点击右边的create,进入后在右边编程
获取****的推荐
获取上图中的架构推荐,并将数据保存到本地----注意:此处要先在本地指定保存位置:我的是D:\\****文件夹,要先创建好
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2019-01-21 17:10:28
# Project: ****1
from pyspider.libs.base_handler import *
import time
import os
class Handler(BaseHandler):
crawl_config = {
}
def __init__(self):
self.base_dir ="D:\\****"
@every(minutes=24 * 60)
def on_start(self):
self.crawl('https://www.****.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开始运行
点击这个follows
继续
成功了
查看本地:
里面的txt文件保存了以上的链接