PHP抓取百度百科資料實踐

2021-07-27 10:15:06 字數 1698 閱讀 5372

可以看到格式為

好了現在有了url了,我們下面就要開始抓取我們想要的資料了。最想要的資料應該就是我們搜尋出來的詞條的基本資訊,就是圖下的內容:

周杰倫是名人,你可按照詞條的分類不同建立不同的資料表,比如人物一張表,影視內容一張表等等,因為同一類的百科基本資訊組成都差不多。如果用nosql就更方便了,直接把這些資訊全放進去就可以。

抓取頁面一部分的內容還是用phpquery比較方便,我們先看一下這個基本資訊的dom元素:

可以看到這個是乙個basic-info為class的div包裹的,左邊的資訊在basicinfo-left中,右邊的資訊在basicinfo-right中。具體的資訊在乙個dt和dd組成的元素裡,乙個資訊(在.basicinfo-item name的class)對應乙個值(在basicinfo-item value的class中)。

我們直接把這個class為basic-info的div裡面的html抓取下來就好,剩下我們在用正則匹配我們想要的內容。

直接pq('.basic-info')->html()就可以了。

我們先看一下抓取到的內容是什麼樣子的:

基本上就是乙個原始的html內容。我們要正則匹配出來我們想要的資訊然後存入相應的字段中。

我們先把這個字串裡的空格都清楚掉,方便我們的正則匹配,我這裡寫了乙個函式:

!注意:可以看到我最後還替換了乙個\x的東西,這個是什麼呢?這個就是乙個坑。大家可以在上面的html圖中看到,其中資訊為兩個字的中間有四個空格,但是這個空格並不能用平常的空格給代替掉,必須用ascii碼來替換,這是需要注意的。

接下來正則匹配我們想要的資訊:

這裡也要注意,有些我們想要的資訊是有多個資訊匹配的,雖然名字不一樣,但是裡面資訊的內容卻是相近的。這裡舉例的是明星和運動演員,都是獲得的獎項,但是名字卻不一樣。同樣的還有電影的票房,票房、全球票房、統計票房等等,其實都是票房的字段資訊,隨意抓取的時候多觀察幾個百科頁面的資訊,做到萬無一失。

然後將匹配到的資訊存到陣列中準備插入資料庫,在插入資料庫之前還有乙個工作要做:

我們要把陣列中的標籤、注釋和多餘資訊給剔除。

注釋是這樣的:

多餘資訊是這樣的:

這些都是要注意的內容。

最後我們就得到了我們想要的資料了,分類插入資料庫就ok啦。

百度百科爬蟲PHP

header content type text html charset utf 8 接受前台資料 data id post data id url data id var dump url ch curl init curl setopt ch,curlopt url,url curl seto...

AnimateWindow 百度百科

animatewindow 開放分類 程式設計 計算機 api 函式功能 該函式能在顯示與隱藏視窗時能產生特殊的效果。有兩種型別的動畫效果 滾動動畫和滑動動畫。函式原型 bool animatewindow hwnd hwnd,dword dwtime,dword dwflags 引數 hwnd 指...

WCF百度百科

根據微軟官方的解釋,wcf 之前的版本名為 indigo 是使用託管 建立和執行面向服務 service oriented 應用程式的統一框架。它使得開發者能夠建立乙個跨平台的安全 可信賴 事務性的解決方案,且能與已有系統相容協作。wcf是微軟分布式應用程式開發的集大成者,它整合了.net平台下所有...