私はPythonと正規表現を使用してHTMLドキュメントを検索していましたが、ほとんどの人が言うこととは異なり、問題が発生する可能性はありますが、完全に機能していました。とにかく、Beautiful Soupの方が速くて簡単だと思いましたが、正規表現でやったことをどうやってやるのか本当にわかりません。かなり簡単でしたが、面倒でした。
このページのHTMLを使用しています:
http://www.locationary.com/places/duplicates.jsp?inPID=1000000001
編集:
主な場所のHTMLは次のとおりです。
<tr>
<td class="Large Bold" nowrap="nowrap">Riverside Tower Hotel </td>
<td class="Large Bold" width="100%">80 Riverside Drive, New York, New York, United States</td>
<td class="Large Bold" nowrap="nowrap" width="55"> <input name="selectCheckBox" type="checkbox" checked="checked" disabled="disabled" />Yes
</td>
</tr>
最初の同様の場所の例:
<td class="" nowrap="nowrap"><a href="http://www.locationary.com/place/en/US/New_York/New_York/54_Riverside_Dr_Owners_Corp-p1009633680.jsp" target="_blank">54 Riverside Dr Owners Corp</a></td>
<td width="100%"> 54 Riverside Dr, New York, New York, United States</td>
<td nowrap="nowrap" width="55">
私のプログラムがそれを取得し、Beautiful Soupを使用して読みやすくすると、HTMLはFirefoxの「ソースの表示」とは少し異なります...理由はわかりません。
これらは私の正規表現でした:
PlaceName = re.findall(r'"nowrap">(.*) </td>', main)
PlaceAddress = re.findall(r'width="100%">(.*)</td>\n<td class="Large Bold"', main)
cNames = re.findall(r'target="_blank">(.*)</a></td>\n<td width="100%"> ', main)
cAddresses = re.findall(r'<td width="100%"> (.*)</td>\n<td nowrap="nowrap" width="55">', main)
cURLs = re.findall(r'<td class="" nowrap="nowrap"><a href="(.*)" target="_blank">', main)
最初の2つは、メインの場所と住所です。残りは残りの場所の情報のためです。これらを作成した後、91などは必要ないため、cNames、cAddresses、およびcURLの最初の5つの結果のみが必要であると判断しました。
BSでこのような情報を見つける方法がわかりません。BSでできることは、特定のタグを見つけてそれを使って行うことだけです。このHTMLは、すべての情報があるため、少し複雑です。私が欲しいのはテーブルにあり、テーブルタグもちょっと混乱しています...
どのようにしてその情報を取得し、最初の5件程度に限定しますか?
ありがとう。