Python爬虫WinError 10061连接拒绝问题?

python爬虫时显示 [WinError 10061] 由于目标计算机积极拒绝,无法连接。

import csv
import random
import time
# import pandas as pd
import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

class Spider(object):
    def __init__(self):
        pass

    @staticmethod
    def get_data_and_save(city, year, month):
        with open(f'{city}_数据.csv', 'w', encoding='utf-8', newline='') as f:
            csv_writer = csv.writer(f)
            csv_writer.writerow(
                ['日期', '质量等级', 'AQI指数', '当天AQI排名', 'PM2.5', 'PM10', 'So2', 'No2', 'Co', 'O3'])
            if month < 10:
                url = f'https://tianqihoubao.com/aqi/{city}-{year}0{month}.html'
            else:
                url = f'https://tianqihoubao.com/aqi/{city}-{year}{month}.html'
            res = requests.get(url, verify=True).text
            soup = BeautifulSoup(res, 'html.parser')
            for attr in soup.find_all('tr')[1:]:
                one_day_data = list()
                for index in range(0, 10):
                    one_day_data.append(attr.find_all('td')[index].get_text().strip())
                csv_writer.writerow(one_day_data)

    def crawl_air_quality(self, years, months, cities):
        for city in cities:
            for year in years:
                for month in months:
                    self.get_data_and_save(city, year, month)
                    time.sleep(2 + random.random())
                    print(city, year, month)

if __name__ == '__main__':
    spider = Spider()
    # 获取数据,保存数据
    spider.crawl_air_quality([2022], [1, 2, 3], ['beijing', 'shanghai', 'guangzhou'])
阅读 1.1k
avatarAI BotBETA

WinError 10061 错误通常表示你的程序试图连接到的服务器拒绝了你的连接请求。这可能是由几个原因造成的:

  1. 服务器没有运行:你试图连接的服务器可能没有运行,或者正在运行但是没有在你试图连接的端口上监听。
  2. 防火墙或安全组设置:可能是你的防火墙或者云服务提供商的安全组设置阻止了你的连接请求。
  3. 错误的URL或端口:你可能正在试图连接到一个错误的URL或端口。

针对你的代码和错误,你可以尝试以下几种解决方法:

  • 检查URL是否正确:首先,确认你试图连接的URL是否正确。你可以尝试在浏览器中打开这个URL,看看是否能正常访问。
  • 检查服务器状态:如果URL是正确的,那么可能是服务器没有运行或者没有在正确的端口上监听。你可以尝试联系服务器的管理员或者提供者,确认服务器的状态。
  • 检查防火墙和安全组设置:如果服务器状态正常,那么可能是你的防火墙或者安全组设置阻止了你的连接请求。你需要检查你的防火墙设置,或者联系你的云服务提供商,确认你的IP地址和端口是否被允许访问服务器。
  • 增加异常处理:在你的代码中,你可以增加异常处理来捕获这个错误,并打印更多的信息来帮助你调试。例如:
try:
    res = requests.get(url, verify=True).text
except requests.exceptions.ConnectionError as e:
    print(f"ConnectionError: {e}")
    continue

这样,当连接错误发生时,你可以看到更详细的错误信息,有助于你找到问题的原因。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进