ヨルダンは、国務長官を調査します:アラバマ


Demo code here
上の写真はUSSアラバマです.それは引退した第二次世界大戦戦艦の非常にクールな博物館のことです.それは、我々をSecretary of State web scraping seriesで我々の第18のポストに連れて来ます.我々は、ビジネスリードを得るためにアラバマ州長官のWebスクレーピングを実行するつもりです.
私はフロリダのパンハンドルに少し移動し、携帯電話、アラバマ州のほんの少しのドライブを離れていた.それは涼しい場所でした、そして、それは最も近いCostcoを持ちました.

調査



最近登録されたビジネスを探す.彼らは、おそらく新しいサービスと製品でセットアップを得ようとしているビジネスで、おそらく既存の関係を持っていません.一般的に、これらはより価値あるリードになると思います.
状態が検索する日付範囲を提供しないならば、私はかなり大丈夫に働くトリックを発見しました.私は“2020”を検索します.2020はキャッチーな数字の一種であり、私たちがその年に現在あるので、人々はその名前を持つビジネスを始める傾向があります.
私が最近登録されるこれらのうちの1つを見つけるならば、私はどこかのビジネスIDを探します.通常、POSTリクエストのURLまたはフォームデータのクエリパラメータです.いずれにしても、そのIDを1つインクリメントして、まだ登録されている会社を得ることができれば、最近登録されたビジネスを見つけることができます.

ここでは2020年の検索結果を見ることができます.これらの数字の間のダッシュは最初に私はそれが昇順ではないかもしれないが、アルファ文字がないので、私は期待していると思います.
663 - 391をクリックすると私はhereです.

まず最初に、そして、最も注目すべきことは、それが我々がより最近登録されたビジネスを持っているように見えるということです.より一般的により最近のものを意味するかどうか見るために、私たちはしばらくの間、もう少しチェックします.
また、そのURLを見て価値がある.http://arc-sos.state.al.us/cgi/corpdetail.mbr/detail?corp=643391&page=name&file=&type=ALL&status=ALL&place=ALL&city=これらの追加のクエリパラメータ項目は必要ありませんこれを削除すると、このページは正常に戻ります.しかし、それは私たちはきれいにきれいな都市やビジネスタイプなどの他のものによってフィルタリングできることを教えてくれます.
いくつかの迅速なインクリメントを行うには、より大きなIDは確かに最近のです.クール、我々は入っている.

暗号



トップブロックは、ほとんどの状態で使用される式の同じ種類です.私たちは特定のIDから始めて、別々の機能で詳細を扱うよりループします.
(async () => {
     const startingId = 642999;
     for (let i = 0; i < 1000; i+=50) {
         await getDetails(startingId + i);
         await timeout(1000);
     }
})();
セレクタは少し複雑でしたが、Vermontのような状態でパターンを使用するだけで簡単なスイッチを作りました.
    const informationFields = $("#block-sos-content tr ");
    for (let i = 0; i < informationFields.length; i++) {
        const cells$ = cheerio.load(informationFields[i]);
        const label = cells$(".aiSosDetailDesc").text();
        const value = cells$(".aiSosDetailValue").text();

主な問題は、表示されるデータが常に同じ場所にあるわけではないので、インデックスを使用できないことです.したがって、上記のように、我々はデータを持つすべての行をつかみます.それから、我々はそれを通してループして、ラベルと価値を選びます.
それは本当にきちんとした方法我々は我々が欲しいデータを得ることを確認することです.以下に、関数全体がどのように見えますか
async function getDetails(sosId: number) {
    const axiosResponse = await axios.get(`http://arc-sos.state.al.us/cgi/corpdetail.mbr/detail?corp=${sosId}`);
    const $ = cheerio.load(axiosResponse.data);


    const business: any = {};
    const title = $("thead:nth-of-type(1) tr:first-child td:first-child").text();
    business.title = title.trim();
    const informationFields = $("#block-sos-content tr ");
    for (let i = 0; i < informationFields.length; i++) {
        const cells$ = cheerio.load(informationFields[i]);
        const label = cells$(".aiSosDetailDesc").text();
        const value = cells$(".aiSosDetailValue").text();

        switch (label) {
            case 'Entity ID Number':
                business.idNumber = value;
                break;
            case 'Formation Date':
                business.formationDate = value.replace(/\n/g, "").trim();
                break;
            case 'Registered Office Street Address':
                business.address = value.trim();
                break;
            case 'Registered Agent Name':
                business.agentName = value.replace(/\n/g, "").trim();
                break;
                // Qualify date varies widely compared to formation date when it is a foreign business
            case 'Qualify Date':
                business.qualifyDate = value;
                break;
            case 'Entity Type':
                business.entityType = value;
                break;
            default:
                break;
        }
    }
    console.log("business", business);
}

そして・・・.私たちはそれをした.我々は、最近登録された企業のアラバマ州長官を掻きました.
Demo code here

ビジネスリード探しですか?


javascriptwebscrapingguy.comでここで話したテクニックを使用して、我々は素晴らしいウェブデータにアクセスする方法を開始することができました.Cobalt Intelligenceでより多くを学んでください!
Jordan Scrapes Secretary of State: Alabama年には、JavaScript Web Scraping Guyが初めて登場した.