質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1573閲覧

pythonでスクレイピングができません。

sususu

総合スコア99

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2018/12/18 12:08

編集2018/12/18 12:11

いつもお世話になります。
pythonでスクレイピングができなくて困っております。
スクレイピングしたい値は下の画像の色が変わっている<li>の中身です。
イメージ説明

コードは下記のとおりです。
※参考サイトhttps://qiita.com/taka-kawa/items/f0597b2f375da7ddbb73

#config: utf-8 import requests import urllib2 from bs4 import BeautifulSoup from config import config first_view = urllib2.urlopen(config['web_info']['url']).read() soup = BeautifulSoup(first_view,"lxml") def extract_pick_up(soup=soup): columns = soup.find_all("li",class_="item.js-item.js-tiled") print(columns) return columns[0:1] if __name__=="__main__": columns = extract_pick_up() print(columns)

変数soupの中にページのHTMLファイルが入ってくるところまでは確認できております。
問題はsoup.find_all("li")も値が入ってきているのは確認できているのですがクラスを指定すると値が持ってこれなくて困っております。
下記を試してみましたが値を取得できませんでした。
class_="item.js-item.js-tiled"
class_="item js-item js-tiled"
class_="item js-item"

jsと書いてあるので何かjavascriptを読み込むような指定が必要なのでしょうか?
すいませんがどなたかご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2018/12/18 12:12 編集

質問欄に URL を記載できますか? 見たところ、名前が item.js-item.js-tiled なので、Javascript であとから挿入されたクラスのように見えます。Javascript のレンダリングは行われないので、selunium 等使わないと無理だと思います。
sususu

2018/12/18 12:29

もしかしたらですが"item"だけにしリストの一番目を表示したらできたかもしれません。 上に張らせていただきます。
guest

回答2

0

<li class="item js-item js-tiled">

class名はitem,js-item,js-tiledの3つ別々の名前になりどれを選んでも大丈夫です。

li.item
li.js-item
li.js-tiled

3つ全部のクラス名の場合は
soup.select('li.item.js-item.js-tiled')
でいけます。

どうもクラス名が複数ある場合はCSSセレクタで選択するのがベストのようです。

js-tiledはJavascriptレンダリング時に追加されるようですので
CSSセレクタの場合は
soup.select('li.item.js-item')

find_allの場合は
soup.find_all('li', class_='item js-item ')

あとこういう方法もあるようです。
Beautifulsoup複数クラスセレクタ
https://code.i-harness.com/ja/q/267040e

投稿2018/12/18 13:28

編集2018/12/18 13:50
barobaro

総合スコア1286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sususu

2018/12/29 13:50

CSSセレクタで取得する方法もあるのですね!ありがとうございます。 ベストなとり方ができるように、取得方法について調べてみたいと思います! ありがとうございました!!
guest

0

ベストアンサー

以下のようにCSSセレクタ li.item で取得できました。

python

1import urllib.request 2from bs4 import BeautifulSoup 3 4url = 'https://yukinostores.com/' 5res = urllib.request.urlopen(url) 6soup = BeautifulSoup(res.read(), 'lxml') 7 8def extract_pick_up(soup): 9 items = soup.select('li.item') 10 return items 11 12items = extract_pick_up(soup) 13 14for item in items: 15 print('name: {}, url: {}'.format(item.h2.text, item.a['href']))
name: バイカラー ロング丈コート かっこいい 大人女子 冬コーデ 配色 ベルト付き, url: /items/5c16373ac49cf37a9ba614a4 name: スタイリッシュ ロングコート カッコいい ベルト付き カジュアル, url: /items/5c163274c49cf36865a60ecb name: ウエストゴム 羽根模様 ボリューム ロング丈 タッセルスカート 四色, url: /items/5c1625f6144448145d99b9c8 name: 三点セット ハイネックニット ペプラムフリルトップス ショートパンツ 二色, url: /items/5c16021127b44e7413ae133a name: 配色 エレガント 大人女性 リボン ニットトップス 二色, url: /items/5c15f88e27b44e64daae0fe8 name: セクシー 透け感 ウエストカットアウト ニットワンピース フレア 3色, url: /items/5c152a66c49cf353b6a60cde name: 肩出し オフショルダー風 クロス セクシー フェミニン 三色, url: /items/5c1526c614444810a399b077 name: 肩出し オフショルダー風 セクシー リブニット フェミニン 全2色, url: /items/5c152464144448782199b482 name: 異素材 レース 切替オーガンジー ニットワンピース 膝丈 二色, url: /items/5c137e9ec49cf34249a60baf name: フリル 可愛い ラブリーニットミニワンピース ボリューム袖 三色, url: /items/5c1366ca2a28624dcfcfc763 name: ハート柄 刺繍 タートルネック 可愛いニットトップス 全3色, url: /items/5c13618a7cd3615a0aeb66c5 name: レース 異素材ニットワンピース パール 長袖フェミニン スリット入り 三色, url: /items/5c1234847cd36161edeb6902 name: ロング丈 異素材 スパンコール チュール 不規則 キャバドレス, url: /items/5c122f497cd3616222eb6640 name: Aライン フレア Vネック 結婚式 ロング丈ドレス キャバドレス, url: /items/5c12164327b44e5e6a3827bc name: 2点セットアップ フリルニット+チュール不規則スカート 大人可愛い, url: /items/5c1212632a2862582653ed25 name: もこもこ 可愛い エレガント風 上下二点セット ジャケット+ミニスカート, url: /items/5c120ace2a286226aef8005d name: チュールドレス ロング丈 ベスト式 ワンピース 結婚式 キャバドレス パーティー, url: /items/5c114fcb14444857fb4b1876 name: ニットミニスカートセット 2点上下 ラウンドネック ストライプ おしゃれ, url: /items/5c114ba3c49cf33042dcfd62 name: パール マルチ 新作 アクセサリー 可愛い, url: /items/5c11481e144448321f4b1b94 name: ピンク ニットワンピース vネック ミニ丈 大人可愛い ベルト付き, url: /items/5c0fb86b2a28623869767011 name: ニット 異素材ワンピース チュール ロング丈 フェミニン オフショルダー風, url: /items/5c0fac20c49cf37e76c67411 name: 切替 ロング丈 チュール ワンピース 結婚式 キャバドレス パーティー, url: /items/5c0f239a27b44e3dad13254e name: 異素材 シースルー 切替レッド ロング丈ドレス Aライン パーティー, url: /items/5c0e612a1444484e5141634d name: 切り替え異素材 エレガント ミディアム丈ワンピース ツイードジャケットセット, url: /items/5c0e451227b44e4c75131e44 name: 花柄 ドレスセット 2点上下 クラシック アンサンブル オスカル, url: /items/5c0e29cf7cd3615a3de9df0d name: オフショルダー風 ロング丈 結婚式 2次会 披露宴 パーティードレス, url: /items/5c0e1fa3c3976c69837d33df name: フリル パール 切替バイカラー ひざ丈ワンピース ニット 全3色, url: /items/5c0d12637cd3614fa328e314 name: バイカラー ベロア プリーツロングスカート バイカラー 秋冬 ウエストゴム 三色, url: /items/5c0d0bba7cd3614fa328dfc1 name: もこもこリボンショール 結婚式 パーティードレスコーデ 全8色, url: /items/5c0d0547c3976c64fcebab98 name: フェミニン 肩フリル ニットミニ丈ワンピース ラブリー 全三色, url: /items/5c0cffdbc3976c243debbd1f name: 秋冬新作 ショール 異素材 シフォン 結婚式 ドレスコーデ カーディガン, url: /items/5c0ce33f14444878edf9db3d name: ロング丈 レッド スパンコール シースルー フィッシュテール キャバドレス, url: /items/5c0bc30f7cd36111b728da4c

投稿2018/12/18 12:27

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sususu

2018/12/18 12:32

すごいきれいでわかりやすいです! こんな早く書いて回答してしまうなんて。。。 ありがとうございます!参考にさせていただきます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問