querylist V4 列表采集
生活随笔
收集整理的這篇文章主要介紹了
querylist V4 列表采集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通常情況下我們會先采集列表頁,然后再循環采集列表中的每篇文章,采集列表需要用到range()函數來配合rules()函數。
如圖我們要采集IT之家的文章列表,我標記了不同的顏色來分解頁面元素:
藍色區域:我們要采集的整個列表
紅色區域:列表中的每一條文章
黃色區域:我們要采集的每條文章的元信息,標題、文章鏈接、簡介以及縮略圖
首先要分析出紅色區域的選擇器,我們稱之為切片選擇器或范圍選擇器,也就是range 。如圖,利用瀏覽器的開發者工具可以很容易分析出切片選擇器為:.ulcl>li,然后我們需要在這每個切片區域中去采集文章的標題、文章鏈接、簡介以及縮略圖,利用同樣的方式分析出每個元素的選擇器,這里不再贅述,最終列表采集代碼為:
采集代碼:
use QL\QueryList; $url = 'https://it.ithome.com/ityejie/'; $rules = [ ? 'title' => ['h2>a','text'],// 采集文章標題 ? 'link' => ['h2>a','href'],// 采集鏈接 ? 'img' => ['.list_thumbnail>img','src'],// 采集縮略圖 ? 'desc' => ['.memo','text']// 采集文檔簡介 ];// 元數據采集規則 $range = '.content li';// 切片選擇器 $rt = QueryList::get($url)->rules($rules)->range($range)->query()->getData(); print_r($rt->all());采集結果:
Array( ? [0] => Array? (?[title] => [link] => [img] => [desc] => )[1] => Array ([title] => 快訊:iOS版QQ大面積閃退(網友反映已恢復)[link] => https://www.ithome.com/html/it/358734.htm[img] => //img.ithome.com/images/v2/grey.gif[desc] => iOS版QQ大面積閃退,原因未知。目前根據IT之家的網友反映,目前iOS版本的QQ已經恢復,但是近期的消息記錄已經消失)[2] => Array ([title] => 阿里影業公布截至近15個月業績:營收33億元,增幅130%[link] => https://www.ithome.com/html/it/358728.htm[img] => //img.ithome.com/images/v2/grey.gif[desc] => 阿里影業集團公布截至2018年3月31日的十五個月財務業績:報告期內公司營業收入達到33.03億元,較上一年同期十五個月的14.32億元,增長幅度超130%)// .... )數據是采集回來了,但我們發現有一點瑕疵,結果里面有一條結果是空的,且文章縮略圖鏈接不正確。
如圖我們再次分析頁面可以得知,第一條切片區域是廣告,所以采集的第一條結果為空;而文章列表的縮略圖使用了懶加載,所以圖片的真正鏈接在img的data-original屬性上,修正后的代碼如下:
采集代碼:
use QL\QueryList; $url = 'https://it.ithome.com/ityejie/'; $rules = [ ? 'title' => ['h2>a','text'],// 采集文章標題 ? 'link' => ['h2>a','href'],// 采集鏈接 ? 'img' => ['.list_thumbnail>img','data-original'],// 采集該頁的圖片鏈接屬性 ? 'desc' => ['.memo','text']// 采集文檔簡介 ];// 元數據采集規則 $range = '.content li:gt(0)';// 切片選擇器,跳過第一條廣告 $rt = QueryList::get($url)->rules($rules)? ->range($range)->query()->getData(); print_r($rt->all());采集結果:
Array([0] => Array ([title] => 快訊:iOS版QQ大面積閃退(網友反映已恢復)[link] => https://www.ithome.com/html/it/358734.htm[img] => //img.ithome.com/newsuploadfiles/thumbnail/2018/5/358734_240.jpg[desc] => iOS版QQ大面積閃退,原因未知。目前根據IT之家的網友反映,目前iOS版本的QQ已經恢復,但是近期的消息記錄已經消失)[1] => Array ([title] => 阿里影業公布截至近15個月業績:營收33億元,增幅130%[link] => https://www.ithome.com/html/it/358728.htm[img] => //img.ithome.com/newsuploadfiles/thumbnail/2018/5/358728_240.jpg[desc] => 阿里影業集團公布截至2018年3月31日的十五個月財務業績:報告期內公司營業收入達到33.03億元)// .... )就這樣采集到了IT之家的文章列表以及文章內容
總結
以上是生活随笔為你收集整理的querylist V4 列表采集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常微分方程的解法 (一): 常微分方程的
- 下一篇: MATLAB数组的左右移动