日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP采集商家信息及采集方法概述(上)

發(fā)布時間:2025/7/14 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP采集商家信息及采集方法概述(上) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?最近電子商務市場上面,有很多商家的導航,里面收集了大量的商家信息,如果從事電子商務的這些信息還是有用的。我最近在做的一個項目就要用到這些信息,但是你總不能給別人要吧,這樣別人是不給滴。所以只有自己爬了。以前也寫過幾個類似的爬蟲爬取一個站點的某些信息總結說來就是

第一:確定要爬取的資源。

第二:確定爬取資源的資源地址(url)

第三:分析找出資源地址規(guī)律

第四:抓取資源地址。

第五:循環(huán)獲取地址的內容

第六:匹配抓取內容入庫

第六:完結,使用抓取數(shù)據(jù)。

上一次爬取的是一淘的商家信息,大概有5000個商家信息。當時匹配用的是正則匹配,整個html的正則有時候比較麻煩。這次用的是phpquery(這里做個簡介,稍后會單獨寫一篇介紹的文章)。

這一次爬取一家網(wǎng)(shop.yijia.com)的數(shù)據(jù) 商家信息有100000個,這次把爬取的思路和相關代碼給大家分享下,以便有以后有相同或者類似的需求的參考交流學習。如果有需要這次爬取的數(shù)據(jù)的留言吧,可以給。

爬取開始...........

第一:

確定爬取的資源。我要爬取的是商家信息,這個網(wǎng)站號稱“商城超過500家并從萬余家電子商務網(wǎng)站中精選23個分類,最后我確實爬取到90585個商家,去除重復的無效的大概也有50000+的有效商家列表。那么我要爬取的就是這些商家信息,如果每一個商家是一個record那么我大概要爬取10萬條數(shù)據(jù)。

第二:

確定爬取資源地址。一家網(wǎng)的商家地址在shop.yijia.com。商家分為二級分類,一級大類例如:服裝飾品,美容護發(fā),數(shù)碼產(chǎn)品等。在一級下面有二級分類,二級下面就直接是商家列表,每一頁是十個。一家網(wǎng)的規(guī)律很好找

我們來找一些例子分析....

第一級大類:

服裝飾品:http://shop.yijia.com/listshop/index_1/

美容護發(fā):http://shop.yijia.com/listshop/index_2/

數(shù)碼產(chǎn)品:http://shop.yijia.com/listshop/index_1048/

一類的大類其實只有十來個,我沒有爬取直接手動添加了。(爬取是為了簡化勞動,如果為了十來條數(shù)據(jù)去寫個爬蟲,就不值當了)

第二級類別:我們拿服裝飾品下面分類(女裝,女鞋,女包,男裝,男鞋,男包)的來舉例,

女裝,http://shop.yijia.com/listshop/index_1_25/

女鞋:http://shop.yijia.com/listshop/index_1_26/

女包:http://shop.yijia.com/listshop/index_1_27/

很明顯的規(guī)律,這里就細說了,如果這個觀察不出來,那個就不要采集了

然后分類下面的分頁 我們拿女裝來舉例

第一頁:http://shop.yijia.com/listshop/index_1_25_0_0_1/

第二頁:http://shop.yijia.com/listshop/index_1_25_0_0_2/

第三頁:http://shop.yijia.com/listshop/index_1_25_0_0_3/

?

第三:

分析資源地址規(guī)律,這里比較簡單的規(guī)律,其實一般統(tǒng)一網(wǎng)站的資源類型資源地址不會差別太大,

關鍵是最后一個參數(shù)index_x_y_0_0_z

其中x 一級分類 y二級分類 z分頁 至于當中兩個0干嘛的 我也不知道。觀察抽取分析后就是都是這樣的。

第四:抓取資源地址,抓取后我們不能隨便的保存是吧,最好能分類保存,這里就設計到一個本地數(shù)據(jù)庫的設計,可以參考的猜解。

? ? 第一步:一級分類入庫,我這里手動拷貝的畢竟只有十來條

? ? 第二步:抓取二級分類,這里觀察頁面結構可以發(fā)現(xiàn),一級分類頁面中的內容中頁面結構相似 在一級分類頁面的一個div是保存二級分類的目錄樹的 dd id="dd_open_1" 里面的

  • <dd?id="dd_open_1">??
  • <ul>??
  • ????<li?class="sel"><a?href="/listshop/index_1_25/"?target="_self">女裝</a></li>?
  • ????<li><a?href="/listshop/index_1_26/"?target="_self">女鞋</a></li>?
  • ????<li><a?href="/listshop/index_1_27/"?target="_self">女包</a></li>?
  • ????<li><a?href="/listshop/index_1_28/"?target="_self">男裝</a></li>?
  • ????<li><a?href="/listshop/index_1_29/"?target="_self">男鞋</a></li>?
  • ????<li><a?href="/listshop/index_1_30/"?target="_self">男包</a></li>?
  • ????<li><a?href="/listshop/index_1_31/"?target="_self">內衣</a></li>?
  • ????<li><a?href="/listshop/index_1_32/"?target="_self">配飾</a></li>?
  • ????<li><a?href="/listshop/index_1_33/"?target="_self">飾品</a></li>?
  • ????<li><a?href="/listshop/index_1_34/"?target="_self">運動服飾</a></li>?
  • ????<li><a?href="/listshop/index_1_1086/"?target="_self">成衣定制</a></li>?
  • </ul>??
  • </dd>?
  • ?

    那么好的規(guī)律找到了哦 只要在每個一級頁面里面的id為dd_open_1里面的ul就行了

    循環(huán)是一個一級分類的頁面內容然后抓取里面的li 和對應的href

    然后 是二級分類對應的分頁數(shù)量

    進入一個二級分類然后查看 這里有不同的方法 不過這要找到有一種可行就可以了我說下我的,如果有分頁那么一定會有一個尾頁 那么尾頁的url中的最后一個參數(shù)是

    (int a)/ 那么 a就是這個分頁的數(shù)量

    我們來看個示例

  • <div?class="pager?cardlist03"><a?href="/listshop/index_1_25_0_0_1/"?target="_self">首頁</a>?
  • ????<a?href="/listshop/index_1_25_0_0_1/"?target="_self">上一頁</a>?
  • ????<a?href="/listshop/index_1_25_0_0_1/"?target="_self">1</a>?
  • ????&nbsp;2&nbsp;<a?href="/listshop/index_1_25_0_0_3/"?target="_self">3</a>?
  • ????<a?href="/listshop/index_1_25_0_0_4/"?target="_self">4</a>?
  • ????<a?href="/listshop/index_1_25_0_0_5/"?target="_self">5</a>?
  • ????<a?href="/listshop/index_1_25_0_0_3/"?target="_self">下一頁</a>?
  • ????<a?href="/listshop/index_1_25_0_0_500/"?target="_self">尾頁</a>?
  • ????&nbsp;共500頁&nbsp;到第?
  • ????<!--?.....省略輸入框代碼?太長了?不好截斷?哈哈?-->?
  • </div>?
  • 我的做法是取得 div class="pager" 的這個然后取得里面的最后一個a標簽

    獲取他的屬性href 用explode 已‘_’ 截斷 然后取得的數(shù)值就是他如果沒有就默認一頁如果有就是相應的頁數(shù)。

    然后在最后的商家頁面中有我們需要的兩個信息,商家簡介和url 。logo在商家列表頁里面可以獲得。這個就說了見代碼吧。

    ?

    這樣我們得到了所有的資源路徑(規(guī)律,推出所有的分類)

    ?

    下面的就是采集階段了。

    這里就不多說了直接上代碼。

    注意:

    第一:這里分了三個小腳本,因為是在pc上跑。如果在服務器上可以合成一個來跑。

    第二:不要惡意和暴力采集,這樣對大家都不好,會被當成DDOS 攻擊屏蔽你的ip或者給網(wǎng)站服務器太大壓力致使崩潰的。剛開始就被封了IP ?然后我這里一次采集后sleep(1) 就沒什么問題了。

    代碼相關

    數(shù)據(jù)庫結構

    ?

  • 'yj_shop_category',?'CREATE?TABLE?`yj_shop_category`?(?
  • ??`sc_id`?int(10)?NOT?NULL?AUTO_INCREMENT?COMMENT?'主鍵id',?
  • ??`sc_name`?varchar(255)?NOT?NULL?COMMENT?'分類名稱',?
  • ??`sc_parent_id`?int(10)?NOT?NULL?DEFAULT?'0'?COMMENT?'父類id',?
  • ??`sc_url`?varchar(255)?NOT?NULL?COMMENT?'分類url',?
  • ??`sc_page_num`?int(6)?NOT?NULL?COMMENT?'共多少個分頁',?
  • ??`sc_current_page_num`?int(6)?NOT?NULL?DEFAULT?'1'?COMMENT?'當前采集頁',?
  • ??`sc_add_time`?int(10)?NOT?NULL?COMMENT?'增加時間',?
  • ??`is_grab`?tinyint(1)?NOT?NULL?DEFAULT?'0'?COMMENT?'是否采集過',?
  • ??PRIMARY?KEY?(`sc_id`)?
  • )?ENGINE=InnoDB?AUTO_INCREMENT=126?DEFAULT?CHARSET=utf8'?
  • ?
  • 'yj_shop_information',?'CREATE?TABLE?`yj_shop_information`?(?
  • ??`si_id`?int(10)?NOT?NULL?AUTO_INCREMENT?COMMENT?'商家主鍵',?
  • ??`si_name`?varchar(255)?NOT?NULL?COMMENT?'商家名稱',?
  • ??`si_cat_id`?int(10)?NOT?NULL?COMMENT?'商家所屬分類',?
  • ??`si_shop_url`?varchar(255)?NOT?NULL?COMMENT?'一家中的商家url',?
  • ??`si_true_url`?varchar(255)?NOT?NULL?COMMENT?'實際url',?
  • ??`si_yijia_url`?varchar(255)?NOT?NULL?COMMENT?'一家中商家簡介頁面',?
  • ??`si_logo_url`?varchar(255)?NOT?NULL?COMMENT?'logo圖片地址',?
  • ??`si_desc`?text?NOT?NULL?COMMENT?'詳細描述',?
  • ??`si_front_desc`?text?NOT?NULL?COMMENT?'簡介描述',?
  • ??`si_add_time`?int(10)?NOT?NULL?COMMENT?'增加時間',?
  • ??PRIMARY?KEY?(`si_id`)?
  • )?ENGINE=InnoDB?AUTO_INCREMENT=86367?DEFAULT?CHARSET=utf8'?
  • ?
  • 這一篇就到這里然后我們下一篇說具體的采集代碼

    ?

    PHP采集商家信息及采集方法概述(下)

    ?



    ? ? 本文轉自kefirking 51CTO博客,原文鏈接:http://blog.51cto.com/phpzf/799458,如需轉載請自行聯(lián)系原作者


    總結

    以上是生活随笔為你收集整理的PHP采集商家信息及采集方法概述(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。