ここから本文です

Pythonでのスクレイピングについて 現在Pythonでクローリングとスクレイピング...

you********さん

2017/8/517:55:06

Pythonでのスクレイピングについて

現在Pythonでクローリングとスクレイピングのプログラムを作っています。
クローリングの結果、下記のようなソースのデータをダウンロードしました。

<!DOCTYPE html>
<html xmlns="...."><head><!--Shady DOM styles for custom-style -->
中略
<meta content="AAA" name="DC.title"/>
<meta content="BBB" name="DC.description"/>
以下略

このデータのうち、AAAとBBBをそれぞれ変数title, desc
に格納するにはどのようにすればよいでしょうか?

私の書きかけのコードでは、BeautifulSoupを使って
soupという変数に上記のソースデータが格納されていています。
(soup = BeautifulSoup(data, "lxml")としました。
dataは、headless chromeで、とあるurlからダウンロードしたデータです)

title = soup.findAll(?)
desc = soup.findAll(?)
のように書くと出来そうという情報を見つけたのですが
まだ上手くいかず、質問させていただきました。

BeautifulSoup以外のライブラリを使う方法でも構いません。
どうぞよろしくお願いいたします

補足情報が不足しておりすみません。

title = soup.findAll("meta", attrs={"name":"DC.title"})
desc = soup.findAll("meta", attrs={"name":"DC.description"})
とすることで、下記の<>の全体は取り出すことができました。
<meta content="AAA" name="DC.title"/>
<meta content="BBB" name="DC.description"/>

content=""の中身(AAA or BBB)のみ取り出すということができていません。
title = soup.findAll(省略).get('content')のように
.get('content')をつけることで、content=""の中身が取り出せる
ということをWebページで見かけて試したのですが、
下記2つのエラーメッセージが出てしまいました。

"ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key
AttributeError: ResultSet object has no attribute 'get'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?

以上、よろしくお願いします。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
469
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

dcu********さん

2017/8/719:51:03

find_all()で返ってくるのはオブジェクトのリストなんで、エラーにもかかれているようにfind()を使うか、find_all()で返ってきたリストをforループを使って処理すればいけると思いますよ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

kar********さん

2017/8/519:00:19

> まだ上手くいかず

具体的にどううまく行かないのですか?

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる