プロが教える店舗&オフィスのセキュリティ対策術

はじめて Pythonを利用としているのですが、理解不足でエラーの解消ができないでおります。
NHK WORLD NEWSをWEBから 連続して、取り出して、EXCELに表示しようとしています。
作業予定としては 1⃣ 別のpy でURLのリストを取込作成 2⃣ 今回、表示しているpyの Urllistへ EXCEL経由で取り入れて、連続して読み込み、EXCELへリストアップしようとしています。
1番目のURLは問題なく EXCELへ取り込めるのですが、2番目からの取込がうまくいきません。
『ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。』というエラーが出ます。
解説文が WEBで検索すると多くでているのですが、理解できずに解決策が見つかりません。
(Win10 hHome 22H2、EXCEL365 Ver2306、Python3.11.4、Selenium2.0.9.0、openpyxl3.1.2    cmdのウィンドウがすぐに閉じてしまうので、読み込めず違いがあるかもわかりません?)

解決策、また、より良いコード等がありましたら、ご指摘、ご指導よろしくお願いします。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome import service as fs

import openpyxl
import datetime

CHROMEDRIVER = r"driver/chromedriver.exe"

chrome_service = fs.Service(executable_path=CHROMEDRIVER)
browser = webdriver.Chrome(service=chrome_service)
#++++++++++++++++++++++++++++++++++++

data_list = []
Urllist_list = []

#++++++++++++++++++++++++++++++++++++
Urllist_list = [
"https://www3.nhk.or.jp/nhkworld/en/news/20230706 …
"https://www3.nhk.or.jp/nhkworld/en/news/20230706 …
"https://www3.nhk.or.jp/nhkworld/en/news/20230706 …
"https://www3.nhk.or.jp/nhkworld/en/news/20230706 …
]
#++++++++++++++++++++++++++++++++++++
wb_new = openpyxl.Workbook()
ws_new = wb_new.active

row_num = 1
#########################################################browser.implicitly_wait(15)
##################################################################################################################

for Urllist in Urllist_list:

dt = datetime.datetime.now().date()
now = datetime.datetime.now()
dm = now.strftime("%x %X")

ws_new.cell(row_num, 1).value = str(Urllist)
ws_new.cell(row_num + 1, 1).value = str(dm)
row_num = row_num + 2

######################################################

browser.get(str(Urllist))

######################################################

links = browser.find_elements(By.TAG_NAME,"h1")

for link in links:
link_text = link.text
link_url = link.get_attribute("a")
data_list.append([link_text])

for data in data_list:
if data[0] != "" and data[0] != "News":

ws_new.cell(row_num, 2).value = data[0]

row_num = row_num + 1

######################################################

links = browser.find_elements(By.TAG_NAME,"p")

#data_list = []

for link in links:
link_text = link.text
link_url = link.get_attribute("p")
data_list.append([link_text])

#+++++++++++++++++++++++++++++++++++++++++++++++++++++++

for data in data_list:

if data[0] != "" :

if "Your subscription plan doesn" in data[0]:
break

if "*You will leave" in data[0] :
break

if data[0] != "News":
# テキスト
ws_new.cell(row_num, 3).value = data[0]
row_num = row_num + 1

######################################################
browser.quit()
######################################################

ws_new.title = "NHKNEWS"
wb_new.save("NHKNEWS.xlsx")

######################################################

質問者からの補足コメント

  • 16行の data_list = [] を 49行へ 
    68行の #data_list = [] の #  を 外す。
    訂正を お願いします。

      補足日時:2023/07/07 05:23
  • 54行 link_url = link.get_attribute("a")
    72行 link_url = link.get_attribute("p")  
    は 不要でした。  よろしく お願いします。

      補足日時:2023/07/09 06:21

A 回答 (1件)

>ConnectionRefusedError


相手(NHK)から悪意あるアクセスとして接続拒否されてるのでは。
明示的に1分待つようにしてテストしてみるとか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
browser.implicitly_wait(60) で 試してみましたが、結果は同様でした。
(ほかの方法があるとは思いますが、)
JAPANTIMES や YAHOO FINANCE でも、同種のデータ取得を 試していますが、1個目は取得できるが、2個目に入る時に、NHK WORLD NEWSの場合と同様に エラーとなります。
確かかどうかは不明ですが、『悪意あるアクセスとして接続拒否』 では、ないのでは、と思われるのですが―――。
(この連絡を以前にさしあげたつもりでしたが、リストアップされていないので、送信ミスだったと思われます。失礼しました。)
よろしくお願いいたします。

お礼日時:2023/07/10 09:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!