BeautifulSoup requests爬虫類初体験

3107 ワード

BeautifulSoup requests爬虫類初体験
爬虫類はpythonと言わざるを得ない
よく使われるPython爬虫類庫(hunt zhanより抜粋)
  • Beautiful Soup.有名で、よく使われる爬虫類の需要を統合しています.欠点:JSをロードできません.
  • Scrapy.強力な爬虫フレームワークのように見え、簡単なページの爬虫(url patternが明確に知られている場合など)を満たすことができます.このフレームワークでアマゾンの商品情報などのデータを簡単に登ることができます.しかし、weiboのような少し複雑なページ情報では、このフレームワークはニーズを満たすことができません.
  • mechanize.利点:JSをロードできる.欠点:ドキュメントが大幅に欠落しています.しかし、公式のexampleや人肉で試してみる方法は、無理に使えます.
  • selenium.これはブラウザを呼び出すdriverです.このライブラリでは、認証コードの入力など、ブラウザを直接呼び出すことができます.
  • cola.分布型爬虫類のフレームワークです.プロジェクト全体の設計は少し悪く、モジュール間の結合度は高いが、参考に値する.

  • Beautiful SoupのWebページの解析は非常に簡単で乱暴です(requestsに合わせて)基本的な登りは問題ありません
    このデータが王と呼ばれた時代、データがないのはコンテンツ製品にとって間違いなく足の半分を歩いていた.(これは恥ずかしいが、仕方がない.著作権のないコンテンツを公開する誘惑力が大きすぎて、人工的に仕事の量を取り出すのは複雑すぎる)
    くだらないことは言わないで,薪を割く.
    1.ライブラリのインストール
  • beautifulsoup4
  • 公式中国語ドキュメント
  • pip install beautifulsoup4
    
  • requests
  • 公式中国語ドキュメント
  • pip install requests
    
  • 解析器
  • を取り付ける
    pip install lxml
    

    ぶんせきき
    使用方法
    メリット
    劣勢
    Python標準ライブラリBeautifulSoup(markup, "html.parser")
    Pythonの内蔵標準ライブラリは、ドキュメントのフォールトトレランスに適した速度で実行できます.
    Python 2.7.3 or 3.2.2)前のバージョンでは文書のフォールトトレランスが悪かった
    lxml HTML解析器BeautifulSoup(markup, "lxml")
    高速ドキュメントのフォールトトレランス機能
    C言語ライブラリのインストールが必要です
    lxml XML解析器BeautifulSoup(markup, ["lxml-xml"])``BeautifulSoup(markup, "xml")
    速度が速くXMLを唯一サポートする解析器
    C言語ライブラリのインストールが必要です
    html5lib BeautifulSoup(markup, "html5lib")
    最適なフォールトトレランスは、ドキュメントをブラウザで解析してHTML 5形式のドキュメントを生成します.
    速度が遅い外部拡張に依存しない
    2.具体的な手順
    st=>start:   requests     html
    op1=>operation:   beautifulsoup4    html
    op2=>operation:           
    op3=>operation:        
    op4=>operation:     
    e=>end:   
    
    st->op1->op2->op3->op4->e
    

    3.一般的な操作# , lxml soup = BeautifulSoup(html, 'lxml') # class more bp = soup.find_all(attrs={"class": 'more'}) # bp = soup.main # p p = soup.find_all('p') # ( data-number ) soup.find_all(attrs={"data-number": re.compile("^[0-9]*$")}) # main as = soup.main.descendants # for child in as: # tag( tag ,NavigableString ) if isinstance(child, Tag): # span id id counter if child.name == 'span' and 'id' in child.attrs and child['id'] == 'counter' and child.string: # # .contents .children # tag .contents tag : child.next_sibling.contents[0].string # for string in soup.main.stripped_strings: print(string) # child.parent # .next_sibling .previous_sibling # child['src']
    以上の操作を熟知して简単にhtmlの纯粋なデータのホームページを登ることができて、あなたは持つ価値があります!