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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1499閲覧

python3 スクレイピング 特定サイト内アドレス収集 CSVリスト化

sadie

総合スコア18

スクレイピング

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/10/17 09:46

表題の件、情報の収集まではできたのですが
CSVに書き込むことに必要なコードの1語がどうしてもわかりません
ご教授頂ければ幸いです
最下段 xxxxxx に示す部分です

Python3

1import csv 2import requests 3import bs4 4import re 5 6""" 7# 8# 9# 10#お約束。ループで回すたびに初期化しようとするとエラーになったので。 11# 12# 13# 14# 15""" 16res = requests.get('https://itp.ne.jp') 17res.raise_for_status() 18soup = bs4.BeautifulSoup(res.text, "html.parser") 19 20""" 21# 22# 23# 24# 25#5ページ分だけ取得して、配列に保持する。 26# 27# 28# 29""" 30url_list = [] 31 32for i in range(1): 33 value = "{0}".format(i) 34 url = 'https://itp.ne.jp/genre_dir/syaken/' 35 url_list.append(url) 36#print(url_list) 37 38 39""" 40# 41# 42# 43#配列を一個づつ回して、htmlを解析して、メールアドレスだけ取得 44# 45# 46# 47# 48""" 49for url in url_list: 50 res = requests.get('%s' % url) 51 soup = bs4.BeautifulSoup(res.text, "html.parser") 52 for p in soup.find_all('a', class_='boxedLink emailLink'): 53 line = str(p) 54 match = re.search(r'[\w.-]+@[\w.-]+', line) 55 print(match.group(0) ) 56 57with open('teat.csv', 'w', encoding='utf8') as f: 58 writer = csv.writer(f) 59 writer.writerow(['タイトル・説明','URL']) 60 writer.writerows(xxxxxxx) 61

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

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

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

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

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

guest

回答1

0

ベストアンサー

csv.writerows() は N行M列の2次元配列を渡してあげると CSV として書き込まれます。

追記

投稿したコードがなぜかでていなかったので追記

python

1import time 2import csv 3import re 4import requests 5import bs4 6 7# 5ページ分だけ取得して、配列に保持する。 8base_url = 'https://itp.ne.jp/genre_dir/syaken/pg/{page_no}/' 9urls = [base_url.format(page_no=i) for i in range(3)] 10print(urls) 11 12# 配列を一個づつ回して、htmlを解析して、メールアドレスだけ取得 13addrs = [] 14for url in urls: 15 print('fetching... ' + url) 16 res = requests.get(url) 17 soup = bs4.BeautifulSoup(res.text, 'html.parser') 18 for a_tag in soup.find_all('a', class_='boxedLink emailLink'): 19 match = re.search(r'[\w.-]+@[\w.-]+', a_tag['onclick']) 20 addrs.append([match.group(0)]) 21 22 time.sleep(1) # アクセス間隔 23print(addrs) 24 25with open('address.csv', 'w', encoding='utf8') as f: 26 writer = csv.writer(f) 27 writer.writerows(addrs)

投稿2018/10/17 10:40

編集2018/10/18 05:14
tiitoi

総合スコア21956

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

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

sadie

2018/10/22 16:20

コードの書き直しまでいただき いつもありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問