PHP爬取企業詳情(百度信用)

2021-10-06 01:39:09 字數 3770 閱讀 1297

1.1、嘗試獲取資料和檢視url鏈結

1、我們可以隨便搜尋法人代表,例如輸入:馬雲

2、我們嘗試搜尋公司名稱,例如輸入:阿里巴巴

3、我們嘗試搜尋社會統一信用碼,例如輸入:91330100716105852f

1.2、檢視網頁源**的內容

從上圖可以看出返回的資料中有json資料,大部分獲取資料都是從這裡取出來的。

所以我們只需要擷取這裡面的內容,轉換下就可以了。

##2、php**實現

#####2.1、爬取企業資訊

//獲取公司統一社會信用**

$keyword = input('keyword') ?? 0;

$url = '' . $keyword . '&t=0';

$res = file_get_contents($url);

//獲取爬取到資料的物件

$start = strpos($res, 'define(\'global/tpldata\',', 0) + 25;

$end = strpos($res, '}]})', $start) + 3;

$info = json_decode(substr($res, $start, $end - $start), 1)['resultlist'];

$this->success('獲取公司詳情成功!', $info);

其中define(『global/tpldata』,後面的資料才是我們要的,所以開始的位置是取到的位置 + 25個字元,從源**也可以知道結束的位置是}]}),所以結束的位置是取到的位置 + 3個字元,所以擷取的字串就是開始位置擷取,長度為結束位置 - 開始位置,從獲取的內容是resultlist裡面。

2.2、爬取內容分析

,

"logoword": "阿里巴巴",

"titlename": "阿里巴巴(中國)網路技術****",

"titlelegal": "戴珊",

"titledomicile": "浙江省杭州市濱江區網商路699號",

"levelataxer": [

2018,

2017,

2016,

2015,

2014

],"regcap": "1,072,526.0萬",

"bid": "573261311273",

"scope": "開發、銷售計算機網路應用軟體;設計、製作、加工計算機網路產品並提供相關技術服務和諮詢服務;服務:自有物業租賃,翻譯,成年人的非證書勞動職業技能培訓(涉及許可證的除外)。(依法須經批准的專案,經相關部門批准後方可開展經營活動)",

"hitreason": [,,

]}

]}

從上面資料可以看出我們要的內容:

regcap—企業註冊資產,scope—企業經營範圍,enttype—企業型別

openstatus—企業開業狀態,validityfrom—企業註冊時間,titledomicile—企業位址

高亮的標籤,這樣會影響我們取資料。

2.3、詳細的處理資料並輸出

//獲取公司統一社會信用**

$keyword = input('keyword') ?? 0;

$url = '' . $keyword . '&t=0';

$res = file_get_contents($url);

//獲取爬取到資料的物件

$start = strpos($res, 'define(\'global/tpldata\',', 0) + 25;

$end = strpos($res, '}]})', $start) + 3;

$info = json_decode(substr($res, $start, $end - $start), 1)['resultlist'];

if (empty($info)) $this->error('未找到該企業!');

$data = ;

foreach ($info as $key => $val)

$this->success('獲取公司詳情成功!', $data);

,

]}

這樣就可以得到我們要的資料了

//獲取公司統一社會信用**

$creditcode = input('credit_code') ?? 0;

if (!$creditcode) $this->error('請填寫統一社會信用**!');

$url = '' . $creditcode . '&t=1';

$res = file_get_contents($url);

//獲取爬取到資料的物件

$start = strpos($res, 'define(\'global/tpldata\',', 0) + 25;

$end = strpos($res, '}]})', $start) + 3;

$info = json_decode(substr($res, $start, $end - $start), 1)['resultlist'];

//判斷是否存在該企業

if (empty($info)) $this->error('未找到該企業!');

//獲取企業資訊

$info = $info[0];

//需要判斷一次是否信用**一致(如果公司名稱裡面有則代表不是正確的信用碼)

if (strpos($info['titlename'], $creditcode) !== false) $this->error('請填寫正確的信用**!');

$data = ;

$data['titlename'] = $info['titlename'];//公司名稱

$data['enttype'] = $info['enttype'];//公司型別

$data['titledomicile'] = $info['titledomicile'];//公司位址

$data['titlelegal'] = $info['titlelegal'];//公司法人

$data['openstatus'] = $info['openstatus'];//開業狀態

$data['regcap'] = $info['regcap'];//公司註冊資產

$data['scope'] = isset($info['scope']) ? $info['scope'] : '';;//公司資訊

$data['validityfrom'] = $info['validityfrom'];//註冊時間

$this->success('獲取公司詳情成功!', $data);

結果輸出如下:

}

謝謝大家的觀賞,如果有什麼錯誤的地方請多指教。

爬取百度諮詢

獲取url,就是把關鍵字進行urlencode。整理爬取的內容,就是把一些 回車 空格 等雜七雜八的東西過濾掉。輸出結果下面是 import re from urllib import parse import time import requests from bs4 import beautif...

爬取百度(有道)翻譯

難點是分析動態網頁 抓包 找出url。self.query input 請輸入要翻譯的內容 self.url self.data self.headers def run self post response requests.post url self.url,data self.data,hea...

爬取百度貼吧

import urllib.request import urllib.parse import os,time 輸入貼吧名字 baname input 請輸入貼吧的名字 start page int input 請輸入起始頁 end page int input 請輸入結束頁 不完整的url ur...