美文网首页
requests.exceptions.ConnectionEr

requests.exceptions.ConnectionEr

作者: 山竹山竹px | 来源:发表于2020-05-30 19:25 被阅读0次

目的

爬取某音乐网站,某歌手前三页的歌单

我的代码

import requests

url = "https://..................................."
singer_name = input("请输入歌手名字:")

for i in range(1, 4):
    # 使用循环取前三页歌单
    parameter = {
        '以字典形式储存参数':'略'
    }
    #参数和url一起,就构造好了网址
    header = {'origin': 'https://略',
'referer': 'http://略','user-agent': '略'}
    res = requests.get(url,params=parameter,headers=header)
    try:
        if res.status_code == 200:
            res_json = res.json()
            song_list = res_json['data']['song']['list']
            for music in song_list:
                print(music["name"])
    except Exception as error:
        print(error)

报错

如题

分析

查询到的,可能的部分原因:

  1. 认出来是爬虫了,被限制了

    加headers参数,伪装得更像一点。这里的代码中用了3个,可以更换下 user_agent

  2. http的连接数超过最大限制,默认的情况下连接是Keep-alive的,所以这就导致了服务器保持了太多连接而不能再新建连接

    请参考: http://www.chenxm.cc/article/255.html

  3. 请求速度过快(是本次的问题所在)
  4. ip被封

解决

在循环之间加入间隔时间,这里是睡了3s

import requests
import time

url = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp"
singer_name = input("请输入歌手名字:")

for i in range(1, 4):
    # 使用循环取前三页歌单
    parameter = {
        '以字典形式储存参数':'略'
    }
    #参数和url一起,就构造好了网址
    header = {'origin': 'https://略',
'referer': 'http://略','user-agent': '略'}
    res = requests.get(url,params=parameter,headers=header)
    try:
        if res.status_code == 200:
            res_json = res.json()
            song_list = res_json['data']['song']['list']
            for music in song_list:
                print(music["name"])

            time.sleep(3)
    except Exception as error:
        print(error)

相关文章

  • requests.exceptions.ConnectionEr

    python3 用request模块发送http请求时候偶尔会出现下面报错,但是等几个小时候又能正常了。 requ...

  • requests.exceptions.ConnectionEr

    目的 爬取某音乐网站,某歌手前三页的歌单 我的代码 报错 如题 分析 查询到的,可能的部分原因: 认出来是爬虫了,...

网友评论

      本文标题:requests.exceptions.ConnectionEr

      本文链接:https://www.haomeiwen.com/subject/eoyhzhtx.html