これは、リンクを反復処理するために、スクレイパー関数がツイート文字列を1つずつ順番に提供するためです。`を初めて呼び出すと、スクレーパー関数内で計算したリンクのリストの最初のリンクに対応するツイート文字列を取得することを意味します。scrape_coursera()現在はジェネレーターです。Courseraから関連コンテンツを1つずつ生成またはスクレイピングします。next()+`を順番に呼び出すことで、スクレイピングされたコンテンツに1つずつアクセスできます。print」できます。`を使用すると、文字列を1つずつ順番に取得できなくなります。`に置き換えると、最初の呼び出しで最初のものを取得する代わりに、常に最初のブログ投稿に対応する文字列を取得します。2回目の呼び出しなどで。すべてのリンクに対応するすべての文字列の_list_を返すように関数を変更できますが、それはより多くのメモリを消費します。この種のプログラムは、_list_全体をすばやく必要とする場合、短時間でCourseraのサーバーに大量のリクエストを行う可能性があります。これにより、ボットが一時的にWebサイトへのアクセスを禁止される可能性があります。+」は、一度に1つずつ情報を取得するだけで十分なさまざまなスクレイピングジョブに最適です。[thenewstack.io]のスクレーパーを構築します。このプロセスは前のステップで完了したものと似ているため、簡単な概要になります。ブラウザでWebサイトを開き、ページソースを調べます。div」要素であることがわかります。[thenewstack.io]にGETリクエストを作成します。次に、これらの要素からブログへのリンクを抽出し、各リンクを繰り返します。これを実現するには、次のコードを追加します。」フラグを使用するのは、ウェブサイトがセキュリティ証明書の有効期限が切れている場合があり、ここにあるように機密データが関与していない場合はアクセスできるためです。requests.get`メソッドに証明書を検証せず、通常どおりデータの取得を続行するよう指示します。それ以外の場合、メソッドは期限切れのセキュリティ証明書に関するエラーをスローします。extract_paratext()`関数を使用して、使用可能な段落のリストからランダムな段落を取り出すことができます。次の強調表示されたコードをファイルに追加して、これらのタスクを実行します。links:これで、一般的にスクレイピングプロセスに含まれるものがわかりました。独自のカスタムスクレーパーを作成できるようになりました。ランダムな引用ではなくブログ投稿の画像をスクレイピングできます。`タグを探すことができます。識別子として機能するタグの正しいパスを取得したら、対応する属性の名前を使用してタグ内の情報にアクセスできます。+`属性を使用して画像のリンクにアクセスできます。この時点で、2つの異なるWebサイトからコンテンツをスクレイピングするための2つのスクレーパー関数を構築し、2つのスクレーパーに共通の機能を再利用するための2つのヘルパー関数も構築しました。ボットがツイートする方法とツイートする方法を知ったので、スクレイピングされたコンテンツをツイートするコードを作成します。ステップ5-スクレイピングされたコンテンツのツイートこのステップでは、ボットを拡張して2つのWebサイトからコンテンツを取得し、Twitterアカウント経由でツイートします。正確には、2つのWebサイトからのコンテンツを交互に、10分間隔で無期限にツイートする必要があります。loop]を使用して必要な機能を実装します。main()+`関数の一部として実行します。これは、ボットが従うコアの高レベルプロセスを実装します。`として呼び出します。」という名前を付けます。`リストに対応するイテレーターを追加することにより、データを取り込みます。globals()`関数を使用しています。これは、変数名をスクリプト内の実際の変数にマップする辞書を返します。イテレータは、スクレーパー関数を呼び出すときに取得するものです。next()」を呼び出すことができるイテレータになります。`ステートメントで定義されたとおりに、引用符とそれに対応するリンクを含む文字列を返します。for`ループの1回の繰り返しを実行します。next()`呼び出しを行うことができます。+」例外が発生します。`ループが開始されます。コンテンツを取得した後、ボットはそれをツイートし、10分間スリープします。+`例外が発生します。この例外では、イテレータを再インスタンス化して更新し、ソースWebサイト上の新しいコンテンツの可用性を確認します。次に、可能な場合は次のイテレーターに進みます。それ以外の場合、実行がイテレータリストの最後に達すると、最初からやり直して、次に利用可能なコンテンツをツイートします。これにより、ボットは2つのスクレイパーから交互にコンテンツをツイートすることができます。main()+`関数を呼び出すことだけです。スクリプトは、Pythonインタープリターによって_directly_と呼ばれるときにこれを行います。+`スクリプトの完成バージョンです。[このGitHubリポジトリのスクリプト]を表示することもできます。+`のサンプル実行です。bot.pyボットがスクレイピングしたコンテンツを示す出力を、次のような形式で受け取ります。https://thenewstack.io/how-raygun-co-founder-and-ceo-spun-gold-out-of-monitoring-agony/ボットのサンプル実行後、ボットによってTwitterページに投稿されたプログラムによるツイートの完全なタイムラインが表示されます。それは次のようになります。[投稿されたプログラムによるツイート]ご覧のとおり、ボットは、スクレイプされたブログのリンクを、各ブログからのランダムな引用をハイライトとしてツイートしています。このフィードは、Courraとthenewstack.ioからのブログの引用を交互にツイートする情報フィードになりました。Webからコンテンツを集約してTwitterに投稿するボットを構築しました。さまざまなWebサイトにスクレイパーを追加することにより、このボットの範囲を希望どおりに広げることができます。ボットは、すべてのスクレイパーからのコンテンツをラウンドロビン方式で、希望する時間間隔でツイートします。結論このチュートリアルでは、Pythonを使用して基本的なTwitterボットを構築し、ボットがツイートするためにWebから一部のコンテンツをスクレイピングしました。試すべきボットのアイデアはたくさんあります。ボットのユーティリティに関する独自のアイデアを実装することもできます。TwitterのAPIが提供する多機能な機能を組み合わせて、より複雑なものを作成できます。[chirps]をご覧ください。マルチスレッドなどの高度な概念を使用してボットに複数のことを同時に行わせるTwitterボットフレームワークです。misheardlyのような、楽しいアイデアのボットもあります。Twitterボットを作成するときに使用できる創造性に制限はありません。ボットの実装に適した適切なAPIエンドポイントを見つけることが不可欠です。最後に、ボットのエチケットまたは(「ボチケット」)は、次のボットを構築するときに留意することが重要です。ボットにリツイートが組み込まれている場合、ツイートのすべてのテキストをフィルターに通して、不正な言語を検出してからリツイートするようにします。正規表現と自然言語処理を使用して、このような機能を実装できます。スクレイピングするソースを探している間、あなたの判断に従って、誤った情報を広めるものを避けてください。[このブログ投稿]をご覧ください。