BeautifulSoup で遊んで、bing の検索結果をスクレイピングしています。大規模なスクレイピングを行う予定はありません。さまざまなデータ構造などを試してみただけです。
私がやろうとしているのは、スクレイプからのさまざまな解析結果を含む辞書を作成することです。つまり、リンクを 1 つの値として、メタ (説明) 情報を別の値として配置する必要があります。
私の最終結果は、私が想像する次のようになります。
{ '1' : {
'link' : '<a href="watever">Whatever</a>',
'description' : 'this is a great website'
},
'2' : {
... etc ...
}
}
私の現在のコードは次のようになります。
from bs4 import BeautifulSoup
import requests
import html5lib
url = requests.get("http://www.bing.com/search?q=pet+toys")
data = url.text
soup = BeautifulSoup(data, "html5lib")
for link in soup.find_all("li", "sa_wr"):
record = {'link' : link.find_all("a")}
print record
私は明らかにPythonにかなり慣れていません... PHPでは、これを処理する必要があり、まだPython構文などに取り組んでいます.
どんな助けでも大歓迎です。
解決:
コードは想定どおりに機能していましたが、反復処理を行っていなかったため、ディクショナリには項目が 1 つしか表示されていませんでした。
また、推奨事項に従って、各辞書を辞書ではなくリストに追加しました。
records = []
for link in soup.find_all("li", "sa_wr"):
for url in link.find_all("a"):
records.append( {'link' : url.get("href"), 'title' : url.contents} )
for record in records:
print record['title']