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

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

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

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

866閲覧

webスクレイピングをする際のCSSセレクタの指定がわからない

kazu130

総合スコア17

Python

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/01/22 02:26

初心者です。
下記画像のpythonのrequestsを使って、valueのリンクを取得したいのですが
cssセレクタの指定方法がわかりません。
div.link_value="value"ではだめでした。

import requests
import lxm.html

response = requests.get('hoge.com')
root = Lxml.html.fromstring(response.content)
for a in root.cssselect('div.link_value="value"'):
value = a.get("value")
print(value)

イメージ説明

環境

mac OS 10.14.1
Python 3.7.2

csセレクタでどう指定したらいいのか教えてください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Python

1root.cssselect('div input')

じゃ無理ですか?HTML全文かURL見せてほしいですね。。。

もっとも簡単な方法は、CSSセレクタを知りたい要素の上で

右クリック > Copy > CSS Selector

でCSSセレクターをコピーできるはずです

投稿2019/01/22 02:40

yamato_user

総合スコア2321

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

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

kazu130

2019/01/22 02:45

回答いただきありがとうございます。 ('div input')ではダメでした urlはhttps://www.db.yugioh-card.com/yugiohdb/card_list.action ここのリンクをスクレイピングしたいのですが・・・ 右クリック > Copy > CSS Selector で実施したのですがそれも弾かれました・・・・
yamato_user

2019/01/22 02:58

HTMLパーサはBeautifulSoupというのが最も一般的なので、そちらを使用しています。 また、GoogleのデベロッパーモードからコピペしたCSSセレクタはnth-child(n)の部分をnth-of-type(n)に書き換える必要があります。それを踏まえて書きにコードを示します。 import requests from bs4 import BeautifulSoup response = requests.get('https://www.db.yugioh-card.com/yugiohdb/card_list.action') soup = BeautifulSoup(response.text) hit=soup.select("#card_list_1 > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) > div.list_body > div:nth-of-type(2) > div:nth-of-type(1)") print(hit) 私はこれでクロールできました
kazu130

2019/01/22 03:13

丁寧な返信ありがとうございます。 上記で実行したところ python list2.py list2.py:4: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently. The code that caused this warning is on line 4 of the file list2.py. To get rid of this warning, pass the additional argument 'features="lxml"' to the BeautifulSoup constructor. とエラーがでました。 lxmlはインストールしているのですが・・・ 少し調べてみます。
yamato_user

2019/01/22 03:16

soup = BeautifulSoup(response.text, 'html.parser') こんな感じに変えてみてください。
yamato_user

2019/01/22 03:17

もしくは、こんな感じ soup = BeautifulSoup(response.text, features = "lxml")
kazu130

2019/01/22 03:19

迅速な対応ありがとうございます。 上記に変更すると []とでました。 なにかのインストールが足りないんでしょうか・・・・
yamato_user

2019/01/22 03:22

あー申し訳ありません。 多分これで行けるはず! soup = BeautifulSoup(response.text,'html5lib')
kazu130

2019/01/22 03:30

ありがとうございます。 上記でやると bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html5lib. Do you need to install a parser library? とでます parser libraryのインストールでしょうか??
yamato_user

2019/01/22 03:32

pip install html5lib やってみてください
kazu130

2019/01/22 03:37

ありがとうございます!! 取得することができました!! 本当に感謝です。
kazu130

2019/01/22 03:48

追記ですが、card_list_1のvalueの相対URLを取りたいのですがそれもできますか?? なんどもすみません
guest

0

以下のような感じで取得できないでしょうか。

Python

1import lxml.html 2 3res = """ 4<div class="pack pack_ja"> 5<input type="hidden" class="link_value" value="/hoge/huga.action?ope=1"> == $0 6</div> 7""" 8 9root = lxml.html.fromstring(res) 10ret = root.cssselect('div > .link_value') 11for r in ret: 12 print(r.attrib['value']) # /hoge/huga.action?ope=1

投稿2019/01/22 03:03

can110

総合スコア38262

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

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

kazu130

2019/01/22 03:17

回答ありがとうございます。 /hoge/huga.action?ope=1 は取得できました。 実際のサイトで試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問