質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Python スクレイピングについて

Yamada
Yamada

総合スコア3

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

-6評価

0クリップ

355閲覧

投稿2022/02/07 04:44

編集2022/02/10 11:13

スクレイピングする際このコードを使用しようと考えているのですが、サーバーの負担などを考慮してスクレイピングコードとして何点でしょうか?
改善点をお教えいただけるとありがたいです。

動作環境は GoogleColaboratoryです。

Python

module_dir = '/content/drive/MyDrive/module' data_dir = '/content/drive/MyDrive/input/' import os import sys sys.path.append(module_dir) from bs4 import BeautifulSoup import re import requests import time import numpy as np from datetime import datetime as dt from typing_extensions import Protocol import json import random ######################################################################################### FILE_PATH = '/content/drive/MyDrive/module/ip_list.json' USER_AGENT_list = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" ,"Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko; googleweblight) Chrome/38.0.1025.166 Mobile Safari/535.19" ,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148" ] json_open = open(FILE_PATH, 'r') proxy_list = json.load(json_open) UA = USER_AGENT_list[random.randrange(0, len(USER_AGENT_list), 1)] proxy_info = random.choice(proxy_list) ip = proxy_info['ip'] port = proxy_info['port'] protocol = proxy_info['protocol'] proxy = protocol + '://' + str(ip) + ':' + port proxies = { 'http':proxy, 'https':proxy} headers = {'User-Agent' : UA} #例のためヤフージャパンをリンクに使用しています url = https://www.yahoo.co.jp site = requests.get(url, proxy, headers=headers, timeout=3.5) time.sleep(random.uniform(0.1**ボールドテキスト**,0.6)) data = BeautifulSoup(site.text,'html.parser')

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

meg_

2022/02/07 11:56

> サーバーの負担などを考慮してスクレイピングコードとして何点でしょうか? 対象のサイトはスクレイピングが禁止されていないと考えて良いのでしょうか?(USER_AGENT設定しているのは対策ではありませんか?)
Yamada

2022/02/07 15:29

はい。禁止されていないサイトでも一応USER_AGENTは設定したほうが良いという情報があったので、設定しております。
meg_

2022/02/08 13:25

設定しないとスクレイピング出来ないサイトはおそらくロボット等による機械的なアクセスを禁止している気がします。(対象サイトが不明なため断言は出来ませんが) コードについては取得したhtmlを解析するだけなら問題ないと思います。繰り返し処理する場合などは1秒開けるとか必要かもしれません。
Yamada

2022/02/10 02:13

ありがとうございます!

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。