精华内容
下载资源
问答
  • querylist批量采集
    2021-04-09 11:28:06

    说明

    可以在getData()方法中多次调用QueryList来实现递归多级采集。

    示例<?php

    require 'QueryList/vendor/autoload.php';

    use QL\QueryList;

    //获取每个li里面的h3标签内容,和class为item的元素内容

    $html =<<

    • xxx

      item1
      item2
    • xxx2

      item12
      item22

    STR;

    $data = QueryList::Query($html,array(

    'title' => array('h3','text'),

    'list' => array('.list','html')

    ),'#demo li')->getData(function($item){

    $item['list'] = QueryList::Query($item['list'],array(

    'item' => array('.item','text')

    ))->data;

    return $item;

    });

    print_r($data);

    /**

    结果:

    Array

    (

    [0] => Array

    (

    [title] => xxx

    [list] => Array

    (

    [0] => Array

    (

    [item] => item1

    )

    [1] => Array

    (

    [item] => item2

    )

    )

    )

    [1] => Array

    (

    [title] => xxx2

    [list] => Array

    (

    [0] => Array

    (

    [item] => item12

    )

    [1] => Array

    (

    [item] => item22

    )

    )

    )

    )

    */

    更多相关内容
  • 1、tp框架搭配querylist 使用CurlMulti插件 多线程执行后在执行一段时间后出现4042、环境 php nginx mysql 数据量不小(本来用的apache,后来动不动服务器500,代码超时时间都设置了,不行就切换nginx)3、相关代码// ...

    1、tp框架搭配querylist 使用CurlMulti插件 多线程执行后在执行一段时间后出现404

    2、环境 php nginx mysql 数据量不小(本来用的apache,后来动不动服务器500,代码超时时间都设置了,不行就切换nginx)

    3、相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    如下如果这个url 404 那么往后就不执行了 其实我加了判断来着

    public function makeids()

    {

    $index = input('param.index');//接收id用于半自动采集

    $last = input('param.last');//接收id用于半自动采集

    set_time_limit(3600);

    $urlmake = [];

    $ql = QueryList::getInstance();

    for ($i = $index; $i <=$last; $i++) {

    for ($j = $i . '000'; $j <= $i . '999'; $j++) {

    if (ISCESHI){

    $url = LOCALURL."/index.php/index/index/getlists/id/" . $i . '_' . $j;

    }else{

    $url = SERVICE."/index.php/index/index/getlists/id/" . $i . '_' . $j;

    }

    $urlmake [] = $url;

    if(count($urlmake)>=5){

    $ql->use(CurlMulti::class);

    $ql->curlMulti($urlmake)

    ->success(function (QueryList $ql, CurlMulti $curl, $r) {

    echo "Current url:{$r['info']['url']} \r\n";

    // if (!empty($r)){

    $this->getlists($r['info']['url']);

    // }

    unset($urlmake);

    $ql->destruct();

    })

    ->start([

    // 最大并发数,这个值可以运行中动态改变。

    'maxThread' => 1999,

    // 触发curl错误或用户错误之前最大重试次数,超过次数$error指定的回调会被调用。

    'maxTry' => 3,

    // 全局CURLOPT_*

    'opt' => [

    CURLOPT_TIMEOUT => 3600,

    // CURLOPT_CONNECTTIMEOUT => 1,

    CURLOPT_CONNECTTIMEOUT => 0,

    CURLOPT_RETURNTRANSFER => true

    ],

    // 缓存选项很容易被理解,缓存使用url来识别。如果使用缓存类库不会访问网络而是直接返回缓存。

    'cache' => ['enable' => false, 'compress' => false, 'dir' => null, 'expire' => 86400, 'verifyPost' => false]

    ]);

    }

    }

    }

    }

    这里 采集结果非空的时候

    $result = $data->all();

    if (!empty($result)) {

    xx这里执行相关代码

    }

    4、我希望有懂得人能帮我看看咋回事。希望的结果就是假如出现了404 或者其他一些无响应的异常 线程不中断继续执行其他url;

    展开全文
  • 另,虽然采集到了图片(也就是说改改就能采集到文章内容),但是呢离自己想要的文章变形还有不小的差距.就当技术储备了吧. ̄へ ̄ 之前遇到的问题 CurlMulti 在QueryList中找不到 AbsoluteUrl也无法使用 使用composer...

    呃,现阶段还不会使用多线程里配合图片的直接下载 -2018-12-23 11:29:45
    另,虽然采集到了图片(也就是说改改就能采集到文章内容),但是呢离自己想要的文章变形还有不小的差距.就当技术储备了吧. ̄へ ̄


    之前遇到的问题

    CurlMulti 在QueryList中找不到
    AbsoluteUrl也无法使用

    使用composer安装

    composer require jaeger/querylist-curl-multi
    composer require jaeger/querylist-absolute-url
    

    下面是完整的代码

    <?php
    namespace app\index\controller;
    use \app\index\controller\User;
    use \app\admin\controller\Index as AdminIndex;
    use QL\QueryList;
    use QL\Ext\AbsoluteUrl;
    use QL\Ext\CurlMulti;
    
    use think\Db;
    use think\Controller;
    class Index extends Controller
    {
        public function index()
        {
            $DB=new Db;
            // $data = $DB::table('gxxl')->select();
            $data = Db::query("select * from imgmsic");
            // 分配数据
            $this->assign("data",$data);
            return view();
        }
        public function gxxlImg()
        {
            // 注册插件
            $ql = QueryList::use([
                AbsoluteUrl::class, // 转换URL相对路径到绝对路径
                CurlMulti::class    // Curl多线程采集
            ]);
            
            // 获取文章列表链接集合,使用AbsoluteUrl插件转换URL相对路径到绝对路径.
            $urls = $ql->get('http://baidu.com/tupian/list.html',[
                'param1' => 'testvalue',
                'params2' => 'somevalue'
            ],[
                'headers' => [
                    'Referer' => 'http://baidu.com/',
                    'User-Agent' => 'testing/1.0',
                    'Accept'     => 'application/json',
                    'X-Foo'      => ['Bar', 'Baz'],
                    'Cookie'    => 'abc=111;xxx=222'
                ]
            ])->absoluteUrl('http://baidu.com/tupian/list.html')->find('.hy-video-list .clearfix a')->attrs('href')->all();
            
            
            //使用CurlMulti多线程插件采集文档内容
            $ql->rules([ // 设置采集规则
                // 'title'   => ['.head h3', 'text'],
                'imgArr' => ['#playlist .playlist', 'html'],
                // 'imgArr' => array('#playlist4 img','originalsrc')
                ])
                // 设置采集任务
                ->curlMulti($urls)
                // 每个任务成功完成调用此回调
                ->success(function (QueryList $ql, CurlMulti $curl, $r) {
                    echo "Current url:{$r['info']['url']} \r\n";
                    $data = $ql->query()->getData()->all();
                    $durl = QueryList::html($data[0]['imgArr'])->find('img')->map(function($a){
                        $src= $a->attr('originalsrc');
                        $title= $a->attr('title');
                        // 直接下载不会,只好写入到数据库中,再通过php curl下载吧
                        Db::execute("insert into imgmsic value(null,?,?)",[$src,$title]);
                        return $a->attr('originalsrc');
                    });
                    dump($durl);
                    dump($data);
                })
                // 开始执行多线程采集
                ->start([
                    // 最大并发数
                    'maxThread' => 10,
                    // 错误重试次数
                    'maxTry'    => 3
                ]);
        }
     }
    
    展开全文
  • youtube批量采集-低成本解决方案-2

    千次阅读 2018-12-18 15:18:30
    之前我有一篇文章《YouTube视频爬虫-批量采集-低成本解决方案-技术难点和细节回顾》 提到过一种u2b视频采集的方案。该方法适用于针对特定的up主进行批量采集,成本确实挺低,速度也蛮好。之前曾在博客下方挂出邮箱...

    之前我有一篇文章《YouTube视频爬虫-批量采集-低成本解决方案-技术难点和细节回顾》 提到过一种u2b视频采集的方案。该方法适用于针对特定的up主进行批量采集,成本确实挺低,速度也蛮好。之前曾在博客下方挂出邮箱地址,寻求技术交流,但是被很多伸手党给打扰,在这里我只想坚决地告诉诸位:给代码是不可能的,我相信思路对你们才是更重要滴。

    如果你对这方面有兴趣,可以和我们一群程序员交流学习,共同进步

    695623459
    

    背景:

    1.腾讯云的非HK地区外地服务器均很难连接
    2.某些HK地区的服务器也很难连接
    3.我们需要根据关键字进行u2b视频采集,用以支撑我们自己开发的视频编辑器的本地素材库

    针对上述背景,初步意见:

    1.腾讯云如果做视频采集只能用HK的服务器了
    2.HK地区的某些服务器无法连接,我目前推测的原因是恰好你使用的ip被禁,你需要绑定弹性ip,更换ip地址,直到换到本地可用ip
    3.针对关键字的视频采集,还在想着用爬虫吗?千万别走弯路啊!Google开放了 YouTube Data api ,直接可以拿到结果。

    整体思路

    1.Rest API:部署在HK服务器,转发YouTube Data api查询结果
    2.GUI:运行在使用者电脑,用于用户采集操作,用户根据关键字获取待采集任务列表
    3.采集器:运行在HK服务器,依然使用我们的youtube-dl
    4.采集完成之后,推到同区的腾讯云对象存储-HK区
    5.本地下载器,运行在使用者电脑,用于从腾讯云对象存储下载视频到本地

    价格计算

    运行成本计算详细
    经过计算,每天下载15分钟内的视频200个,每月的运行成本是300多。114元买到1C1G2M的HK服务器,每天的采集极限是160GB

    YouTube Data API 开发文档传送门

    关于YouTube Data api我有话要讲

    在之前的文章中有提到,当时走了弯路去看 youtube-api ,结果发现并没有什么卵用,这次呢?可是沾了光,不走弯路,直达目的地啦~
    YouTube API中的Search/list接口,可以直接根据关键字获取符合条件的vedio、channel、playlist,下面是官方给出的demo

    # Sample python code for search.list
    
    def search_list_by_keyword(client, **kwargs):
      # See full sample for function
      kwargs = remove_empty_kwargs(**kwargs)
    
      response = client.search().list(
        **kwargs
      ).execute()
    
      return print_response(response)
    
    search_list_by_keyword(client,
        part='snippet',
        maxResults=25,
        q='surfing',
        type='')
    

    其实筛选条件有很多的,甚至具体到结果排序方式都可以配置。

    返回

    {
      "kind": "youtube#searchListResponse",
      "etag": etag,
      "nextPageToken": string,
      "prevPageToken": string,
      "regionCode": string,
      "pageInfo": {
        "totalResults": integer,
        "resultsPerPage": integer
      },
      "items": [
        search Resource
      ]
    }
    
    

    返回参数说明

    展开全文
  • Wordpress用于采集建站一直以来做垃圾站的朋友都在采用。一来是Wordpress的本身的SEO做得挺不错的,有利搜索引擎收录和SEO排名;另一方面则是Wordpress还有非常多的强大插件,利用Wordpress采集...
  • 本文介绍采集使用八爪鱼7.0采集京东商品图片的方法:首先将京东商品搜索结果网页中图片的URL采集下来,再通过八爪鱼专用的图片批量下载工具,将采集到的图片URL中的图片,下载并保存到本地电脑中。采集网址:京东...
  • 区域选择器或者叫做切片...当采集列表的时候,建议设置这个参数。//第一种写法:没有用到[区域选择器]$ql=QueryList::get('http://www.baidu.com/s?wd=QueryList')->rules(['title'=>array('h3','text'),'link...
  • 拼多多数据采集

    千次阅读 热门讨论 2020-09-21 23:41:01
    千辛万苦,总算把新的拼多多采集方案弄出来了,回想起几个月的尝试和摸索,真心觉得不容易。 前期尝试的方案包括但不限于: 1、H5,PDDAccessToken+anticontent 这个方案很明显,需要处理两个问题: 1)账号...
  • 项目名称和链接采集三.下载项目四.open函数的参数说明 前言 Gitee上的项目放太多有点乱了,最近想归类整理一下。开始想着40个项目手动clone下来本地整理,应该花不了多少时间。实际操作起来还是太麻烦了,代码能...
  • 文章的标题、内容、关键词一键修改,可批量导入TXT内容,瞬间生成上万篇文章,系统也提供新闻采集,自动抓取热门新闻,在配合关键词管理,可做热门关键词优化。 同时给上百个站增加外链 在权重池管理里只需要添加...
  • 批量添加域名、添加关键词,一键建立上百万个网站。轻松获取百万流量!全自动更新:只要您建立网站后,程序将全自动采集、全自动发布文章(智能原创),彻底解放您的双手.
  • PHP+laravel之ES搜索详解

    2021-11-23 08:35:57
    public function queryList(){ //数据采集 $ql = QueryList::get("http://www.rz-tea.com/"); $data['author'] = $ql->find('.topic a')->texts(); $data['title'] = $ql->find('.article-title a')->texts(); $...
  • 重点 评教系统要解决批量录入数据的问题,因为一个学校的学生很多,这里采用导入Excel表格的方式,java代码的话用poi技术实现; 以下是核心导入导出Excel的代码 package com.mfc.ctrl; import java.text....
  • 学校评教系统

    2021-01-08 15:15:45
    重点 评教系统要解决批量录入数据的问题,因为一个学校的学生很多,这里采用导入Excel表格的方式,java代码的话用poi技术实现; 以下是核心导入导出Excel的代码 package com.mfc.ctrl; import java.text....
  • phpquerylist数据采集, phpword导出word文档, 实用好用的API接口, OSS,COS等云端图片上传, jpush极光推送, 批量邮件发送,多语言化, 灵活开启谷歌验证码验证。 导航栏目 | 官网地址 | TP6开发手册 | 服务器 :...
  • php应聘个人简历模板

    千次阅读 2020-12-21 06:54:33
    3、合拍后台数据统计及运营审核功能开发 4、基于阿里云域名解析接口编写域名批量修改解析记录脚本 5、使用第三方微信域名检测接口编写域名有效性批量检测脚本 离职原因: 个人原因 公司名称: 新店宝网络科技有限...
  • jrkadmin_tp6_layui

    2021-04-24 15:49:13
    JrkAdmin(TP6.0.6版本) —— 你值得信赖的后端开发框架 如果对您有...后台采用RABC权限验证,不懂的同学可以查看相关文档实现管理员管理,权限管理,角色管理,菜单管理,附件管理,日志管理phpquerylist数据采集...
  • 在二手车业务线,现阶段无法实现车辆、人、车商信息的在业务审核流程中的数据查重应用,因此业务方为了达成这一目标,基于数据采集和数据查询,应运而生了关系图谱服务。 文章目录一、系统架构二、业务概述三、方案...
  • 首先,什么话也不说,直接上效果图。 查看效果: 电影记忆》 插件是在onethink 平台上开发的一个用于记录自己观看电影、电视媒体的展示工具。 使用技术 bootstrap2.3.1 ui ... QueryList p...
  • java总结

    2020-07-27 01:50:28
    /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home Springboot注解 @RequestParam @RequestBody @RequestParam Long mailConfigId, @RequestParam(required = false) String pt, ...
  • 整理了一些Java方面的架构、面试资料(微服务、集群、分布式、中间件等),有需要的小伙伴可以关注公众号【程序员内点事】,无套路自行领取 写在前边 用单元测试Junit完全可以满足日常开发自测,为什么还要学习...
  • 爬虫框架整理汇总

    2018-06-11 16:46:00
    规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/kafka/csv/excel等)、有大量Demo共享;另外它还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能。 框架特点 为具备一定Go或...
  • CMDB资产管理系统

    2019-03-04 17:56:00
    一、远程服务器资产信息采集方案 实现方案一:agent——server服务端模式 应用场景:多应用于服务器数量多情况下,效率比ssh方式高 客户端: ################### 方式一:Agent,每一台服务器一份 ###########...
  • 有用的工具续

    千次阅读 2018-08-25 21:51:34
    前文 markdown https://ivarptr.github.io/yu-...Typora https://www.typora.io/ http://mark.uxwin.com/https://wordmarkapp.com/ 单词库 http://www.xsdict.cn/ 去广告 Hosts https://githu...
  • 一步一步地配置Spring

    万次阅读 多人点赞 2016-05-19 16:29:48
    (防采集:本文唯一网址在CSDN上,博主会不定期更新加载其它配置,其它均为未经博主同意转载的,原文为http://blog.csdn.net/tangtong1/article/details/51442757) ##二、配置Json支持 ###6. 添加Json依赖 ...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

querylist批量采集