コード import sys import pyperclip import requests import bs4 import csv import datetime #置換用 def replace_n(str_data): return str_data.replace('\n', '').replace('\r', '') #コンカチ用 def concat_list(list_data): str_data = '' for j in range(len(list_data)): str_data = str_data + replace_n(list_data[j].getText()) + ' / ' return str_data #出力データ output_data = [] output_data.append(['検索順位', 'サイトURL', 'TITLEタグ', 'H1タグ', 'H2タグ', 'H3タグ', '記事文字数']) #キーワードの受け取り(引数から。なければクリップボードから) if len(sys.argv) > 1: search_url_keyword = '犬の飼い方'.join(sys.argv[1:]) else: search_url_keyword = pyperclip.paste() #検索順位取得処理 if search_url_keyword and search_url_keyword.strip(): #Google検索の実施 search_url = 'https://www.google.co.jp/search?hl=ja&num=50&q=' + search_url_keyword res_google = requests.get(search_url) res_google.raise_for_status() #BeautifulSoupで掲載サイトのURLを取得 bs4_google = bs4.BeautifulSoup(res_google.text, 'html.parser') link_google = bs4_google.select('div > h3.r > a') for i in range(len(link_google)): #変な文字が入るので除く site_url = link_google[i].get('href').split('&sa=U&')[0].replace('/url?q=', '') if 'https://' in site_url or 'http://' in site_url: #サイトの内容を解析 try: res_site = requests.get(site_url) res_site.encoding = res_site.apparent_encoding except: continue bs4_site = bs4.BeautifulSoup(res_site.text, 'html.parser') #データを初期化 title_site = '' h1_site = '' h2_site = '' h3_site = '' mojisu_site = 0 #データを取得 if bs4_site.select('title'): title_site = replace_n(bs4_site.select('title')[0].getText()) if bs4_site.select('h1'): h1_site = concat_list(bs4_site.select('h1')) if bs4_site.select('h2'): h2_site = concat_list(bs4_site.select('h2')) if bs4_site.select('h3'): h3_site = concat_list(bs4_site.select('h3')) if bs4_site.select('body'): mojisu_site = len(bs4_site.select('body')[0].getText()) #データをリストに入れておく output_data_new = i+1, site_url, title_site, h1_site, h2_site, h3_site, mojisu_site output_data.append(output_data_new) #CSVファイルに出力する now = datetime.datetime.now() csv_file = open('[' + search_url_keyword + ']' + '{0:%Y%m%d%H%M%S}'.format(now) + '.csv', 'w', encoding='UTF-8') csv_writer = csv.writer(csv_file, lineterminator='\n') for j in range(len(output_data)): csv_writer.writerow(output_data[j]) csv_file.close print("done")
実行してもCSVが出力されません。
原因を教えてください。
OSは何でしょうか?
エラーは出ていないのですね?
windows1oになります。
エラーは出ていません
CSVファイル自体が作成されないのでしょうか? それとも0バイトのファイルが作成されるのでしょうか?
インデントなどの修正をしていたところ、次のようなエラーが発生しました。
csv_file = open('[' + search_url_keyword + ']' + '{0:%Y%m%d%H%M%S}'.format(now) + '.csv', 'w', encoding='UTF-8')
FileNotFoundError: [Errno 2] No such file or directory: "[try:\r\n res_site = requests.get(site_url)\r\n res_site.encoding = res_site.apparent_encoding\r\n except:\r\n continue\r\n bs4_site = bs4.BeautifulSoup(res_site.text, 'html.parser')]20190930192215.csv"
ヘッダーしかCSVに入っていませんでした。
原因は何でしょうか?
回答1件
あなたの回答
tips
プレビュー