【SEO対策】上位ページのクローリング+形態素分析するwebサイトを作ってみた
【SEO対策】上位ページのクローリング+形態素分析するwebサイトを作ってみた:
SEO対策は色々あるけど
ということで上位ページクローリングしてみました!
私もSEO
クローリングは以下のpythonコードを参考にさせていただきました!
また単語を取りたいので以下のサイトを参考に
Python初心者が1時間以内にjanomeで形態素解析できた方法
そもそもapiってそんなに待つものじゃない。。。
最初はクローリングしてSEOに活かそうとしていたのにいつの間にかハマっていたパターン。。。
肝心のSEO対策は進んでいないのでこれからやろうと思います笑
今回SEO対策を考えるきっかけとなったサイト
私もネイル
もよろしくおねがいします!
SEO対策はタグの中身が大切らしい
SEO対策は色々あるけど title
h1
h2
あたりに何を入れるかが大切らしい。。。ということで上位ページクローリングしてみました!
できたもの
私もSEO
最初の設計
クローリングlambdaの中身
クローリングは以下のpythonコードを参考にさせていただきました!また単語を取りたいので以下のサイトを参考に
janome
を使用Python初心者が1時間以内にjanomeで形態素解析できた方法
結果api gateway時間短すぎて死亡
そもそもapiってそんなに待つものじゃない。。。- クローリング+形態素分析にかかる時間10分なので今のlambdaなら大丈夫
- しかし
api gateway
は30秒ぐらいしか待ってくれない=>死亡
次の設計図
-
DynamoDB
にキーワードを格納するキーワード入れるlambda
を作成 - 格納されたらイベント発火で
クローリングlambda
を起動 -
クローリングlambda
は結果をDynamoDB
に格納 - 再度同じキーワードでみに行くと結果が見れる(ある程度時間が経ったら更新)
キーワード入れるlambdaの中身
- まずはじめに1時間以内に更新された結果がないか確認
- 結果がない場合はkeywordを新規レコードとして追加
get_result_or_put_keyword.py
dynamoDB = boto3.resource("dynamodb") table = dynamoDB.Table({{TABLE_NAME}}) # DynamoDBのテーブル名 result = table.scan( FilterExpression=Key('keyword').eq(search_url_keyword) )["Items"] if len(result) == 1: if "scantime" in result[0].keys(): # 1時間以内に更新されたデータなら使う if datetime.now() - datetime.strptime(result[0]["scantime"], '%Y-%m-%d %H:%M:%S') < timedelta(hours=1): if "result" in result[0].keys(): return { 'statusCode': 200, 'body': result[0]['result'] } # 使える結果がない場合はdynamodbにkeywordのレコードを入れる param = { "keyword": search_url_keyword, "scantime": now.strftime("%Y-%m-%d %H:%M:%S"), "status": 0 } # DynamoDBへのPut処理実行 table.put_item( Item=param ) print("now searching ...") return { 'statusCode': 200, 'body': "now searching ..." }
DynamoDBから並列でlambdaを呼び出せず死亡
- 一つだとうまく行くが同じタイミングでいくつかキーワードを入れると処理しきれない
- streaming処理的に
並列lambda
はNGな感じなのかもしれない。。。
最終設計図
- streamingで呼び出される
起動lambda
を追加 - 一度に大量に来てもさばけるようになった!
肝心のSEO対策は進まず...
最初はクローリングしてSEOに活かそうとしていたのにいつの間にかハマっていたパターン。。。肝心のSEO対策は進んでいないのでこれからやろうと思います笑
今回SEO対策を考えるきっかけとなったサイト
私もネイル
もよろしくおねがいします!
コメント
コメントを投稿