url

Scrapy爬取女神照片

独自空忆成欢 提交于 2020-04-06 05:56:19
使用Scrapy趴一趴美女图 Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和 自动化测试 。 Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。 Scratch,是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。 Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下: Scrapy主要包括了以下组件: 引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 下载器(Downloader) 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的) 爬虫(Spiders) 爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)

Crawlab尝试

老子叫甜甜 提交于 2020-04-06 03:42:26
官方: https://docs.crawlab.cn/ https://github.com/crawlab-team/crawlab Crawlab配置 Windows 安装 docker: https://www.docker.com/products/docker-desktop 安装python环境: 我选 Pycharm+Anaconda 安装docker-compose: pip install docker-compose 创建项目文件:docker-compose.yml 启动: docker-compose up -d 测试服务: http://localhost:8080/ docker-compose.yml version: '3.3' services: master: image: tikazyq/crawlab:latest container_name: master environment: # CRAWLAB_API_ADDRESS: "https://<your_api_ip>:<your_api_port>" # backend API address 后端 API 地址. 适用于 https 或者源码部署 CRAWLAB_SERVER_MASTER: "Y" # whether to be master node 是否为主节点,主节点为

自动化部署工具syncd

拜拜、爱过 提交于 2020-04-06 03:42:11
一.部署安装 (一)常用安装方式 1. curl https://syncd.cc/install.sh | bash 2. dockerfile安装方式正在测试中 (二)安装参考文档 1. https://syncd.cc/docs/#/install 2. https : //github.com/dreamans/syncd 3. https :// gitee.com/dreamans/syncd 二.使用规范 (一)服务地址 1. http://syncd.cascc.cn/login 账户:syncd 密码:111111 (二)使用操作 1.项目配置 项目空间 项目空间是项目的基本组织单元,是进行项目和多用户隔离和访问控制的主要边界。 项目 -> 空间管理 -> 新增项目空间 项目管理 项目 -> 项目管理 -> [切换项目空间] -> 新增项目 成员管理 只有将用户添加到该项目空间,成为空间成员后才具有相应的权限。 项目 -> 成员管理 -> [切换项目空间] -> 添加新成员 在 添加新成员 输入侧框中输入侧待加入成员的关键词,选中用户后点击添加。 2. 集群配置 添加集群 在创建项目前,需要先添加好项目所需的服务器集群,新建集群步骤如下: 服务器 -> 集群管理 -> 新增集群 按实际情况输入集群名称,如图: 添加服务器 在新建的集群中添加服务器信息,步骤如下:

Python-爬虫介绍

試著忘記壹切 提交于 2020-04-06 02:57:02
网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 通俗地讲,我们把互联网比作一张大蜘蛛网,每个站点资源比作蜘蛛网上的一个结点,爬虫就像一只蜘蛛,按照设计好的路线和规则在这张蜘蛛网上找到目标结点,获取资源。 为什么使用爬虫 爬虫技术主要可以帮助我们做两类事情: 一类是数据获取需求,主要针对特定规则下的大数据量的信息获取; 另一类是自动化需求,主要应用在类似信息聚合、搜索等方面。 爬虫的分类 从爬取对象来看,爬虫可以分为通用爬虫和聚焦爬虫两类。 通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为搜索引擎和大型 Web 服务提供商采集数据。 这类网络爬虫的爬取范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低。 例如我们常见的百度和谷歌搜索。我们输入关键词,它们会从全网去找关键词相关的网页,并且按照一定的顺序呈现给我们。 聚焦网络爬虫(Focused Crawler),是指选择性地爬取那些与预先定义好的主题相关页面的网络爬虫。 和通用网络爬虫相比,聚焦爬虫只需要爬取特定的网页,爬取的广度会小很多。例如我们需要爬取东方财富网的基金数据,我们只需要针对东方财富网的页面制定规则爬取就行。 通俗地讲,通用爬虫就类似于一只蜘蛛,需要寻找特定的食物

phantom+express

你。 提交于 2020-04-06 02:44:05
var express = require( 'express' ); var router = express.Router(); var phantom = require( 'phantom' ); var web2img = (url, res, dataType, width, height) => { phantom.create().then( function (ph) { ph.createPage().then((page) => { var settings = { // operation: "POST", encoding: "utf8" }; page.open(url, settings).then((status) => { console .log(status); var fmt = 'JPEG' ; if (status == 'success' ) { page.property( 'viewportSize' , {width: width || 540 , height: height || 960 }); page.renderBase64(fmt).then((data) => { if (dataType == 0 ) { res.json({code: 1 , data: "data:image/png;base64," +

postman接口测试基础知识

回眸只為那壹抹淺笑 提交于 2020-04-06 00:50:07
接口文档访问地址:http://doc.nnzhp.cn/index.php?s=/6&page_id=8 1.什么是接口:从数据库里面取数据或是插入数据 接口测试:测接口一定要有接口文档--先测业务逻辑,再测异常情况:比如测试登录接口时用接口工具登录5次看是不是就被锁了不能登录了, 其实就是功能测试,它比功能测试还要简单,不需要看页面,只需要看数据对不对就行 http://doc.nnzhp.cn/ xiaohei 123456 2、接口路径url、请求方式get、post 3、请求参数,比如登录的账户密码,输入账户密码后服务端才能进行验证 4、请求方式 get:不需要借助任何工具,在浏览器里面就可以发送请求,直接在浏览器里面输入访问url?参数=参数值 url?parma=abc&name=abcd http://api.nnzhp.cn/api/user/stu_info?stu_name=%E5%B0%8F%E9%BB%91&sex=%E5%A5%B3 post:只要不是get请求,浏览器就不行,就得借助工具了 普通的post方式:打开postman工具--输入访问路径url--选择post方式(前面的路径url后面绝对没有?以及后面的参数)--点击body--选择form-data--输入key和对应的value值 post方式入参有key-value形式、json类型

Python爬取大量数据时防止被封IP

早过忘川 提交于 2020-04-05 23:29:30
继续老套路,这两天我爬取了猪八戒上的一些数据 网址是: http://task.zbj.com/t-ppsj/p1s5.html ,可能是由于爬取的数据量有点多吧,结果我的IP被封了,需要自己手动来验证解封ip,但这显然阻止了我爬取更多的数据了。 下面是我写的爬取猪八戒的被封IP的代码 # coding=utf-8 import requests from lxml import etree def getUrl(): for i in range(33): url = 'http://task.zbj.com/t-ppsj/p{}s5.html'.format(i+1) spiderPage(url) def spiderPage(url): if url is None: return None htmlText = requests.get(url).text selector = etree.HTML(htmlText) tds = selector.xpath('//*[@class="tab-switch tab-progress"]/table/tr') try: for td in tds: price = td.xpath('./td/p/em/text()') href = td.xpath('./td/p/a/@href') title = td.xpath(

异步爬虫+asyncio+python3.7+(async + await )

前提是你 提交于 2020-04-05 20:45:45
import asyncio import json import time import traceback import aiohttp import logging from aiohttp import ContentTypeError from motor.motor_asyncio import AsyncIOMotorClient logging.basicConfig( level =logging.INFO, format = ' %(asctime)s - %(levelname)s : %(message)s ' ) INDEX_URL = 'https://dynamic5.scrape.cuiqingcai.com/api/book/?limit=18&offset= {offset} ' DETAIL_URL = 'https://dynamic5.scrape.cuiqingcai.com/api/book/ {id} ' PAGE_SIZE = 18 PAGE_NUMBER = 1 CONCURRENCY = 5 MONGO_CONNECTION_STRING = 'mongodb://localhost:27017' MONGO_DB_NAME = 'books' MONGO_COLLECTION_NAME = 'books' client =

RESTful API 最佳实践

允我心安 提交于 2020-04-05 20:02:21
RESTful是目前最流行的 API 设计规范,用于 Web 数据接口的设计。 它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。 一、URL 设计 1.1 动词 + 宾语 RESTful 的核心思想就是,客户端发出的数据操作指令都是"动词 + 宾语"的结构。 比如,GET /articles这个命令,GET是动词,/articles是宾语。 动词通常就是五种 HTTP 方法,对应 CRUD 操作。 GET :读取(Read) POST:新建(Create) PUT :更新(Update) PATCH:更新(Update),通常是部分更新 DELETE:删除(Delete) 复制代码 根据 HTTP 规范,动词一律大写。 1.2 动词的覆盖 有些客户端只能使用GET和POST这两种方法。服务器必须接受POST模拟其他三个方法(PUT、PATCH、DELETE)。 这时,客户端发出的 HTTP 请求,要加上X-HTTP-Method-Override属性,告诉服务器应该使用哪一个动词,覆盖POST方法。 根据 HTTP 规范,动词一律大写。 1.2 动词的覆盖 有些客户端只能使用GET和POST这两种方法。服务器必须接受POST模拟其他三个方法(PUT、PATCH、DELETE)。 这时,客户端发出的 HTTP 请求

学习笔记(爬虫):爬取笔趣阁小说

☆樱花仙子☆ 提交于 2020-04-04 12:47:44
# -*- coding: utf-8 -*- import requests from lxml import etree class BookSpider(object): def __init__(self): self.url = "http://www.jianlaixiaoshuo.com/" self.base_url = "http://www.jianlaixiaoshuo.com/" self.headers = { "Use_Agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"} #请求网页内容 def get_html(self,url): html = requests.get(url,headers = self.headers).content.decode() return html #封装xpath def get_xpath(self,html,pattern): p = etree.HTML(html) result = p.xpath(pattern) return result #保存数据 def save_data(self,