Scrapperの目標は、どのボードゲームが最も高く評価されたかを分析し、並べ替えられたリストに出力することです。基本的に「名前:いいね」の辞書。並べ替えたいゲームのリストは次のとおりです:https://boardgamegeek.com/geeklist/268396/20-most-anticipated-games-2020-11th-year-nominatio
PythonでFrameworkScrapyを使用しています。次のコマンドは、タイトルとイマイチを抽出するのに適していることがわかりました。
response.css('.fl > a:nth-child(2)::text').getall()
response.css('.recs a::text').getall()
ゲームの親指が0の場合に問題が発生し、Scrapyはその親指をスキップします。タイトルのリストが賛成のリスト以上であることを意味します。たとえば、上記のコマンドを使用して、25のタイトルのリストと20の親指のアップのリストを取得できます。名前のリストとサムズアップのリストが等しくなるように、空の文字列をデフォルト値の0に変換する方法はありますか?お気に入り:
response.css('.recs a::text').getall(default="0")
高く評価されていない場合は、次のようになります。
<a aria-label="Recommendations and tip info" class="js-score" href="javascript://" onclick="RecSpy( 'listitem', '7520669', 'tippers' ); return false;"></a>
各ボードゲームとそのいいねをメインのDOMとは別に収集する代わりに、いいねとボードゲームの名前の両方を含むすべてのセレクターをフェッチすることができます。
games = response.css('.mb5') # fetch every selector with class "mb5"
for game in games:
name = game.css('.fl > a:nth-child(2)::text').get()
likes = game.css('.recs a::text').get() or 0
...
擬似コードですが、あなたがその考えを理解してくれることを願っています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加