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

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

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

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

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

Q&A

2回答

3516閲覧

pythonのスクレイピングについて

gotank

総合スコア4

スクレイピング

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

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

0グッド

0クリップ

投稿2019/09/25 14:18

編集2022/01/12 10:55

前提・実現したいこと

iタウンページをpythonでスクレイピングして、メールアドレスを大量に取得し、
CSVファイルに書き出したい

発生している問題

CSVファイルにメールアドレスが一個しか出力されません。
プログラミング超初心者で、手探りでコードを書いてみましたが行き詰ってしまいました。

先に進む方法を教えていただけないでしょうか?
よろしくお願いいたします!

該当のソースコード

-- coding: utf-8 --

"""
Created on Sun Sep 15 10:56:44 2019

@author: user
"""

"""

"""
import requests
import bs4
import re
import csv

res = requests.get('https://itp.ne.jp')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "html.parser")

"""

"""
url_list = []

for i in range(5):
value = "{0}".format(i)
url = 'https://itp.ne.jp/tokyo/genre_dir/beautysalon/pg/%s/' % value
url_list.append(url)

for url in url_list:
res = requests.get('%s' % url)
soup = bs4.BeautifulSoup(res.text, "html.parser")
for p in soup.find_all('section', class_='noimage'):
line = str(p)

pattern = r'[\w.-]+@[\w.-]+' mail = re.findall(pattern, line) print(mail)

#ここからCSVの出力
f = open("town.csv", "a")
writecsv = csv.writer(f, lineterminator='\n')

出力

writecsv.writerow(mail)

CSVファイルを閉じる。

f.close()

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

スクレイピングは規約等が読めるようになってから初めてください。

免責事項・著作権等

投稿2019/09/25 14:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siruku6

2019/09/25 15:07 編集

この部分ですね。 ---- 禁止事項 iタウンページでは、多くのお客様が快適にご利用できるよう、以下の行為は禁止しております。 iタウンページのサービスに多大な影響を与える行為 自動的にアクセスするプログラムを使用してiタウンページに繰り返しアクセスする行為 これらの行為が発見された場合には、予告なしにiタウンページへのアクセスを制限する事がありますのでご了承ください。 --- スクレイピングをする際は、このように対象サイトでスクレイピングが禁じられていないかどうか確認しておく必要がありますね。 初めてスクレイピングをやるのであれば、スクレイピング関連の本を買って、その本でOKが出ているサイトを使わせてもらって練習するのがよいでしょう。 (古い本だとサイトの規約が既に変わっていることもあり得ますが....) 勉強すること自体は応援したいと思いますが、それで誤ってWebサイトをダウンさせるといった事故も発生したりしているので、スクレイピングは危険を伴う技術だと認識しておいた方がいいですね。
退会済みユーザー

退会済みユーザー

2019/09/25 21:01

メールアドレスを見て楽しむ以外の用途に使用するならこっちですね。 --- 情報の二次使用について iタウンページで提供する全てのコンテンツの著作権は、NTTタウンページ株式会社及び当該コンテンツ等を提供している提携企業に帰属します。iタウンページで提供する全てのコンテンツおよび情報、データは著作権の対象となっており、使用、再生、複製、複写、販売、再販売など商業的、業務的な使用および転載を禁止します。 --- 規約等が読めるようになったら、次はローカルテストを覚えて、やっと入り口かなぁ。。。
kazukichi_0914

2019/12/03 08:14

みなさんもご指摘のようにスクレイピングをリアルタイムにかけるのはサーバに負荷がかかります。
guest

0

スクレイピングはせめて1秒に1回するなどのサーバーの負荷軽減なども考えてはいかかでしょうか?
例えば、import timeし、time.sleep(1.0)などの工夫が必要です。

そもそも、

禁止事項
iタウンページでは、多くのお客様が快適にご利用できるよう、以下の行為は禁止しております。
iタウンページのサービスに多大な影響を与える行為
自動的にアクセスするプログラムを使用してiタウンページに繰り返しアクセスする行為
当社の承認した以外の方法により本サービスを利用する行為
本サービスを商業目的で利用する行為
当社または第三者の著作権、商標権その他の知的財産権を侵害しまたはそのおそれのある行為
本サービスとは関係のない団体やサービス、活動にたいしての勧誘行為
不正なプログラム・スクリプトなどを用いて、サーバーに負荷を与える行為
本サービスの全部または一部を、当社に無断で、転載、転送、蓄積、販売、貸与、再許諾、出版、その他自己利用の範囲を超えて複製、複写する行為
(上記の行為を助長するプログラムの製造、販売を含む)
本ソフトウェアのリバースエンジニアリング、逆コンパイル、逆アセンブル、その他これらに準じる行為
これらの行為が発見された場合には、予告なしにiタウンページへのアクセスを停止、損害賠償請求等必要な措置(法的措置を含みます。)を取ることができるものとします。

2番目のタウンページのサービスに多大な影響を与える行為 = スクレイピングと考えてもいいのではないのでしょうか。

まずスクレイピングする時はそのページがスクレイピングOKなのかも確認するのも大切です。

まあ僕もPython初心者なので間違っていたら指摘してください。

投稿2020/03/26 10:09

faguri

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問