[Web Crawling] 2. 必要なデータのみインポート


分類データ


Webスクロールでデータをインポートする場合は、必要なデータのみをインポートする方法について説明します.

findAll() find_all()


これはCSSコードでロードする方式です.
findAll(tag, attributes, recursive, text, limit, keywords)
上記の値のみで対応するデータを取得できます.

tagとしてインポート

  • meta tagのコンテンツ値
  • を読み込む.
    for i in bsObject.find_all('meta'):
        print(i.get('content'))

    attributeとしてロード

  • 「class」:「ブラインド」の「span」ラベル
  • をロード
    hList = bsObject.findAll('span', {'class':'blind'})

    textパラメータとしてロード

    hList = bsObject.findAll(text = '네이버')

    キーワードパラメータとしてロード

    hList = bsObject.findAll(id = 'text')
    

    select()


    必要なデータはtagまたはclassの名前、コンテキスト関係から抽出できます.
    select('Tag')
    # tag
    select('.Class)
    # class
    select('#Id')
    # id
    select('tag[attribute]')
    # tag - attribute

    select(「ラベル名」)

    bsSelect = bsObject.select('a')

    select(".クラス名")

    bsSelect = bsObject.select('.content_top')

    select(「ラベル名」「プロパティ」)

    bsSelect = bsObject.select('a[href]')
    for i in bsSelect:
        print(i.get('href'))

    select(「親ラベル」>「子ラベル」)

    bsSelect = bsObject.select('div>span') # 자식 관계

    select(「親ラベルサブラベル」)

    bsSelect = bsObject.select('div span') # 자손 관계

    ネストの使用

    bsSelect = bsObject.select('div.partner_box>h3.title')
    for i in bsSelect:
        print(i.get_text())

    ソースコード

    from re import I
    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context
    #
    html = urlopen('http://www.naver.com')
    bsObject = BeautifulSoup(html, "html.parser")
    #
    # use find_all() or findAll()
    #
    for i in bsObject.find_all('meta'):
        print(i.get('content'))
    #
    # use select()
    #
    for i in bsObject.select('div.partner_box>h3.title'): # select()
        print(i.get_text())

    参考になるブログ


    https://webnautes.tistory.com/691?category=618796
    https://computer-science-student.tistory.com/235