MENU
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
あらゆるモノにHackする、探究者の読み物。
Let's Hack Tech
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
Let's Hack Tech
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
  1. ホーム
  2. プログラミング
  3. 言語別
  4. Python
  5. 【Pythonスクレイピング入門】bs4(BeautifulSoup)をインストール

【Pythonスクレイピング入門】bs4(BeautifulSoup)をインストール

2023 2/02
Python
2019-01-12 2023-02-02
目次

事前準備

requestsでヤフーのトップページにGETリクエストを送ってレスポンスを取得。res変数にhttpレスポンス格納済みです。

import requests

url='https://www.yahoo.co.jp'
res=requests.get(url)

更に目標とするセレクタをChromeのデベロッパツールを使ってクリップボードにコピーし取得しました。

#topicsfb > div.topicsindex > ul.emphasis

ここまでですね。

今回やること

今回は取得したセレクタを実際にプログラム上で使用して、必要な情報を抜き出すという作業です。

必要なもの

  • bs4(BeautifulSoup)
  • lxml

Anacondaでパッケージを管理していれば基本的にどちらも初期状態から入っています。

必要なHTMLを抜き出すためにbs4というモジュールを使います。Python用のHTMLパーサもいくつか存在しますが、bs4とlxmlの組み合わせは割とメジャーなのでこれらを使っていきます。

ない場合はどちらもpipでインストール可能です。適宜インストールしてください。

sudo pip install bs4
sudo pip install lxml

ターゲットを抜き出す

from bs4 import BeautiflSoup as bs4

soup = bs4(res.content,'lxml')
print(soup.select('#topicsfb > div.topicsindex > ul.emphasis'))

一行目はbs4というモジュールのBeautifulSoupというパーツをインポートして、これ以降 bs4 って書いたらそれを使うってことだからね。という宣言です。as bs4 は別になくても動くんですが、その場合一々BeautifulSoupって書くことになります。

なげーよ。ってことで、bs4と書けば使えるようにしてます。

次は soup という変数に先ほど宣言したbs4を呼び出して、res.contentを渡しています。カンマで区切った後の’lxml’はパーサという解析の方式を指示するのですが、別にこれもなくても動きます。省略可能ですが、lxmlは中身がCで書かれているらしく、標準のhtml.parserより早いってことでこちらを使ってます。

最後の行はsoupオブジェクトのselectメソッドに前回デベロッパツールを使って確保したCSSセレクタを渡しています。

この3行でヤフートップからトピックス抜き出し完了・・・するはずでした。

soup.select('#topicsfb > div.topicsindex > ul.emphasis')
Out: []

ふぁ?

Out の中身カラやんけ。( ゚Д゚)

何故か抜き出せていません。

print(soup)

で、全体をさらっと見てみると・・・?

なんか変な文言出てますね。

BOT判定で蹴られてます。
BOT判定というか、直訳すると「ブラウザの情報おかしいから、ちゃんとアップデートしてからアクセスしろよ」的なことをヤフーさんがおっしゃっています。

つまり普段ブラウザからアクセスしてみるヤフーのトップページと、requestsでアクセスして表示されたページ(実際には表示はされてはいないけど)のHTMLが違ったという状態です。

ふぅ、お手上げだぜ・・・。

まとめ

取りたいタグも取れないこんな世の中じゃ~poison

次回、この状況を解決します。

次の記事

あわせて読みたい
【Pythonスクレイピング入門】BOTアクセス対策サイトをrequests+UserAgent偽装で切り抜ける スクレイピング対策をしているサイトで、requestsから正常にアクセスして、普段人間が見ている画面と同じHTMLを返させる方法
Python
BeautifulSoup lxml requests スクレイピング
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

シンプル美と機能性を両立させた、国内最高峰のWordPressテーマ『SWELL』
人気記事
  • IQテストいくつか受けてみました
    ネット上で信憑性がありそうなIQテスト、5種類まとめて受けた結果…
  • hayate
    メルカリの商品を世界最速で購入するためだけのアラートツール
  • 【Python】BeautifulSoupの使い方・基本メソッド一覧|スクレイピング
  • Pythonファイルのexe化
    【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる
  • Amazon Echo アレクサのコマンドまとめ
    AmazonEchoの使い方とできる事、アレクサへの指示コマンド一覧
最近の投稿
  • PyQt5 QListWidget の item削除でtextBoxのフォーカスが奪われる2023-03-05
  • WordPressからのメールが届かない時の調査と解決法2023-02-27
  • 保護中: メルカリアラートツール「疾風」v22022-12-01
  • 保護中: メルカリアラートツール【疾風】カスタマイズオプション一覧2021-03-22
  • 保護中: メルカリアラートツール【疾風】インストール手順2021-03-22
目次
目次