Pyhtonがデータを這い出す方法のまとめ

2711 ワード

1.方式一
1.取得したjson
import requests

requestsを用いて,このサードパーティの構築を実現する.jsonファイルを読み込むことも、Webページ情報を読み込むこともできます.
適用シーン:
  • は、一般に、jsonファイルまたはjson文字列を返すデータを要求するために使用される.
  • は、異なるウェブページリンクを解析することができるが、クラスであり、一定の法則に従うことができるデータである.

  • 例:xxx/123.html xxx/124.htmlはこれらのページに似ています.
    data = requests.get(url=url, verify=False)
    if data.status_code == 404:
        print(url)
        return "no"
    str = data.text

    これは登ったjson文字列で、解析は簡単です.しかし、htmlが含まれているラベルに遭遇することがあります.正規表現を利用して、まず処理してください.次に、jsonのようにフォーマットされた文字列をdick(辞書)に変換してから、辞書をjson文字列に変換します.しかし、本格的に適用される場合は辞書に変換するだけでよく、jsonに変換する必要はありません.jsonは文字列であり、keyに対応するvalue値を取得するのに不便です.でも辞書はdick_に基づいてname['key_name']を使用して、keyに対応するvalue値を取得します.
    import re
    # re         
    re_h = re.compile('?\w+[^>]*>')
    res = re_h.sub('', res)
    
    #      
    dick_data = json.loads(res)

    2.Webソースファイルを取得
    Webページのソースファイルを取得する場合は、ネットワークのソースファイルを解析するツールBeautifulSoupが必要です.
    import requests
    from bs4 import BeautifulSoup
    import urllib3
    
    #   https     
    urllib3.disable_warnings()
    
    
    file = requests.get(url=url, verify=False)
    soup = BeautifulSoup(file.text, "html.parser")

    soupはラベル要素の集合またはクラスです.ここではsoupでラベルのプロパティ、またはラベルの値、またはラベルポイントのプロパティ値を取得できます.例:
     #      
     info1 = soup.select('h4')[0]
     print(info1.text)

    2.方式二
    selenium+webdriverを使用する方法は、ブラウザに対する操作をリアルに模倣して、最大効率の爬虫類の這い出しと反爬虫類の防止を実現する無厘頭の要求方式である.
    1.weddriverのインストール
    対応するwebdriverをダウンロードして、1つのディレクトリの下に置いて、スペースと中国語のディレクトリの下でないほうがいいです.
    次に、環境変数の種類で構成します.
    C:\Program Files (x86)\Google\Chrome\Application

    ダウンロードしたdriverもchromeのインストールディレクトリの下に置きます.
    2.次に、対応するキットをインポートします.
    #   selenium     
    from selenium import webdriver
    #        keys 
    from selenium.webdriver.common.keys import Keys
    #   chrome  
    from selenium.webdriver.chrome.options import Options

    driverのパスを設定するには、次の手順に従います.
    _CHROME_DRIVER_WIN = 'F:/software/chromedriver.exe'

    3.driverの作成
    #   driver
    def create_driver():
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        driver = webdriver.Chrome(executable_path=config._CHROME_DRIVER_WIN, options=chrome_options)
        return driver
    
         driver             ,    bs4    。
    soup = BeautifulSoup(driver.page_source, 'html.parser')

    4.keysの使用
    driver.find_element_by_id('next_buttons').click()

    例えば、以上のクリックイベントは、手動でWebページを切り替えるプロセスを模倣し、切り替えた後もデータの抽出を継続することができます.明示的にjsonデータを返さず、クリックしてページを切り替えたときにページリンクが変わらず、ページデータを取得できないという問題を解決しました.