账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    爬虫报错的问题
    54
    0
    一开始正常运行,一段时间后就会出现下面这样的错误<urlopen error [Errno 2] No such file or directory>但是重新启动后又恢复正常了这个问题是什么原因呢导入模块import timeimport pandas as pdimport os,shutil移动文件def move_file(srcfile,dstfile):if not os.path.isfile(srcfile): print ("%s not exist!"%(srcfile))else: fpath,fname=os.path.split(dstfile) #分离文件名和路径 if not os.path.exists(fpath): os.makedirs(fpath) #创建路径 shutil.move(srcfile,dstfile) #移动文件 print ("move %s -> %s"%( srcfile,dstfile))import smtplibfrom email.header import Headerfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplicationimport os,datetimedef send_email(path):# 时间戳today_date = str(datetime.date.today())yest_date = str(datetime.date.today() + datetime.timedelta(days=-1))# 邮件发送人和接收人user = '570793071@qq.com' # 发送者邮箱pwd = 'vpbkrmkysvsybcdd' # 邮箱的授权码receivers = ['570793071@qq.com'] # 接收者邮箱# 创建一个带附件的邮件实例message = MIMEMultipart()message['From'] = usermessage['To'] = ','.join(receivers)subject = 'Anomalous' + today_datemessage['Subject'] = Header(subject, 'utf-8').encode()# 邮件正文内容message.attach(MIMEText('提醒' + today_date + ', 请注意查收附件!\n有问题随时沟通,谢谢!', 'plain', 'utf-8'))#路径文件夹下的所有文件for file_name in os.listdir(path): print(file_name) # 路径文件夹+文件名 ->合成文件路径 file_path = os.path.join(path, file_name) print(file_path) # 构造附件,传送当前目录下的 csv 文件 part = MIMEApplication(open(file_path, 'rb').read()) part.add_header('Content-Disposition', 'attachment', filename=file_name) message.attach(part) try: smtpserver = 'smtp.qq.com' smtpport = 25 s = smtplib.SMTP(smtpserver, timeout=10) # 连接smtp邮件服务器,端口默认是25 s.login(user, pwd) # 登陆服务器 s.sendmail(user, receivers, message.as_string()) # 发送邮件 s.close() except Exception as e: print("send email error:" + str(e))import urllib.requestimport json查询函数def get_market():# 存放各个币种的信息(symbol、price、turnover rate)summa = []stable_coin = ['usdt','usdc','tusd','pax','gusd','husd','busd','usdk','dusd','brl','eur','gbp']# 查询市值前2000的币for t in range(8): url = urllib.request.urlopen("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=250&page=" + str(t + 1) + "&sparkline=false") data = json.loads(url.read().decode()) for c in data: # 只获取符号和价格和换手率 if c['current_price'] != None and c['total_volume'] != None and c['symbol'] not in stable_coin: turnover_rate = c['total_volume'] / c['market_cap'] temp = {'symbol': c['symbol'] , 'price' : c['current_price'] , 'turnover_rate': turnover_rate} summa.append(temp)summa_s.append(summa)调用扫描后找出量比异常的币种def scan_and_alert():# 是否找到量比异常的币flag = False seconds = time.time()# 存放量比异常的币及其量比anomalous = [] get_market()# secondse = time.time()# print(str(int(secondse-seconds)))# 队列先进先出,超过2个就释放前面的if len(summa_s) > 2: summa_s.pop(0)# 间隔三分钟 前后数据对比if len(summa_s) == 2: for m, n in zip(summa_s[0], summa_s[1]): if m['turnover_rate'] > 0 : price_ratio = n['price'] / m['price'] turnover_ratio = n['turnover_rate'] / m['turnover_rate'] if turnover_ratio >= 1.5 or price_ratio >= 1.03: temp = {'symbol': m['symbol'], 'price_ratio': price_ratio ,'turnover_ratio': turnover_ratio} anomalous.append(temp) flag = True# 找到量比异常的币种if flag: df = pd.DataFrame(anomalous) path = 'D://crypto_currency_scan_result//' + time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(seconds)) dird = 'D://crypto_currency_scan_result//' df.to_csv(path + '.csv', index=False) send_email(dird) srcfile=path+ '.csv' dstfile=path.replace('crypto_currency_scan_result','crypto_currency_scan_result_sended')+ '.csv' move_file(srcfile,dstfile)# 三分钟循环一次time.sleep(160)存放两次查询结果summa_s = []while True:scan_and_alert()
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 爬虫报错问题是指在爬取或执行爬虫任务时,爬虫程序在遇到错误或者遇到预期之外的行为时,无法正常执行,导致程序无法正常运行或返回预期结果。以下是一些常见的爬虫报错问题及其解决方案:

      1. HTTP/1.1 404 Not Found:HTTP/1.1 404 Not Found错误通常表示目标URL未找到,可能是由于网络连接问题、网页结构错乱、DNS解析错误、URL语法错误等原因引起的。解决方案包括检查网络连接,确保抓取的URL在有效的网络范围内,或者检查URL结构是否正确,如URL中是否包含路径、查询参数等。

      2. Connection Error:如果爬虫尝试连接到服务器时出现Connection Error,可能是由于服务器拒绝连接、服务器已关闭、服务器端口设置错误、网络连接错误等原因引起的。解决方案包括检查服务器是否开启了允许爬虫访问的端口,确保服务器的网络配置正确,或者检查URL中的连接参数是否正确。

      3. MalformedURLException:MalformedURLException是处理URL语法错误的一种常见错误。URL是一个包含协议、主机名、路径、查询参数、斜杠和字符集合的字符串,如果不正确地构造或解析URL,可能会导致爬虫无法解析或找到目标URL。解决方案包括检查URL中的所有字符是否在规范的URL字符集内,或者检查URL中的路径是否正确,并确保URL的格式符合爬虫使用的协议和端口。

      4. No Content:No Content错误通常表示目标URL中包含的内容已被删除或修改,可能是由于网页结构变化、数据源更新、数据库操作错误等原因引起的。解决方案包括检查目标URL中的内容是否被删除或修改,如果内容被删除,可能需要替换或更新目标URL;如果内容被修改,需要检查修改的目的是什么,如果是为了数据替换,可能需要重新构建或更新目标URL;如果是为了数据增删改查,需要检查修改的内容是否符合爬虫的数据格式和需求。

      5. Timeout Error:Timeout Error通常表示爬虫在执行请求时遇到了网络超时,可能是由于网络连接速度过慢、服务器响应时间过长、服务器服务器端口设置错误等原因引起的。解决方案包括检查网络连接速度和服务器响应时间,如果网络连接速度慢,可能需要增加网络带宽或优化爬虫的网络请求参数;如果服务器响应时间长,可能需要调整服务器端口设置或优化服务器的性能;如果服务器服务器端口设置错误,可能需要重新设置服务器端口或调整服务器的配置。

      6. ParseError:ParseError是处理解析HTML或XML文件时出现的错误。HTML和XML文件中的数据结构和格式可能与爬虫期望的格式不匹配,可能会导致解析错误。解决方案包括检查HTML和XML文件中的数据结构和格式是否与爬虫期望的格式匹配,如果数据结构和格式不匹配,可能需要进行数据替换或修改;如果数据结构和格式已知,可能需要优化HTML和XML文件的解析逻辑。

      7. Uncaught TypeError:Uncaught TypeError是处理Python表达式或函数调用时出现的错误。Python表达式或函数调用可能包含了未定义的变量、函数等错误,可能会导致解析或执行错误。解决方案包括检查Python表达式或函数调用中的变量、函数等是否正确定义,如果变量、函数等未定义,可能需要添加或修改相应的定义;如果变量、函数等已定义,可能需要检查Python表达式或函数调用中的语法是否正确,如果语法错误,可能需要进行语法修正或重新编写Python表达式或函数调用。

      以上是一些常见的爬虫报错问题及其解决方案,具体问题可能需要根据爬虫的具体环境和需求进行调整。在实际爬取过程中,需要对各种可能的爬虫报错情况进行排查和处理,以确保爬虫的正常运行和获取到预期结果。

    • 唐朝小道 普通会员 2楼

      爬虫报错问题是指在爬取或执行爬虫任务时,爬虫程序在遇到错误或者遇到预期之外的行为时,无法正常执行,导致程序无法正常运行或返回预期结果。以下是一些常见的爬虫报错问题及其解决方案:

      1. HTTP/1.1 404 Not Found:HTTP/1.1 404 Not Found错误通常表示目标URL未找到,可能是由于网络连接问题、网页结构错乱、DNS解析错误、URL语法错误等原因引起的。解决方案包括检查网络连接,确保抓取的URL在有效的网络范围内,或者检查URL结构是否正确,如URL中是否包含路径、查询参数等。

      2. Connection Error:如果爬虫尝试连接到服务器时出现Connection Error,可能是由于服务器拒绝连接、服务器已关闭、服务器端口设置错误、网络连接错误等原因引起的。解决方案包括检查服务器是否开启了允许爬虫访问的端口,确保服务器的网络配置正确,或者检查URL中的连接参数是否正确。

      3. MalformedURLException:MalformedURLException是处理URL语法错误的一种常见错误。URL是一个包含协议、主机名、路径、查询参数、斜杠和字符集合的字符串,如果不正确地构造或解析URL,可能会导致爬虫无法解析或找到目标URL。解决方案包括检查URL中的所有字符是否在规范的URL字符集内,或者检查URL中的路径是否正确,并确保URL的格式符合爬虫使用的协议和端口。

      4. No Content:No Content错误通常表示目标URL中包含的内容已被删除或修改,可能是由于网页结构变化、数据源更新、数据库操作错误等原因引起的。解决方案包括检查目标URL中的内容是否被删除或修改,如果内容被删除,可能需要替换或更新目标URL;如果内容被修改,需要检查修改的目的是什么,如果是为了数据替换,可能需要重新构建或更新目标URL;如果是为了数据增删改查,需要检查修改的内容是否符合爬虫的数据格式和需求。

      5. Timeout Error:Timeout Error通常表示爬虫在执行请求时遇到了网络超时,可能是由于网络连接速度过慢、服务器响应时间过长、服务器服务器端口设置错误等原因引起的。解决方案包括检查网络连接速度和服务器响应时间,如果网络连接速度慢,可能需要增加网络带宽或优化爬虫的网络请求参数;如果服务器响应时间长,可能需要调整服务器端口设置或优化服务器的性能;如果服务器服务器端口设置错误,可能需要重新设置服务器端口或调整服务器的配置。

      6. ParseError:ParseError是处理解析HTML或XML文件时出现的错误。HTML和XML文件中的数据结构和格式可能与爬虫期望的格式不匹配,可能会导致解析错误。解决方案包括检查HTML和XML文件中的数据结构和格式是否与爬虫期望的格式匹配,如果数据结构和格式不匹配,可能需要进行数据替换或修改;如果数据结构和格式已知,可能需要优化HTML和XML文件的解析逻辑。

      7. Uncaught TypeError:Uncaught TypeError是处理Python表达式或函数调用时出现的错误。Python表达式或函数调用可能包含了未定义的变量、函数等错误,可能会导致解析或执行错误。解决方案包括检查Python表达式或函数调用中的变量、函数等是否正确定义,如果变量、函数等未定义,可能需要添加或修改相应的定义;如果变量、函数等已定义,可能需要检查Python表达式或函数调用中的语法是否正确,如果语法错误,可能需要进行语法修正或重新编写Python表达式或函数调用。

      以上是一些常见的爬虫报错问题及其解决方案,具体问题可能需要根据爬虫的具体环境和需求进行调整。在实际爬取过程中,需要对各种可能的爬虫报错情况进行排查和处理,以确保爬虫的正常运行和获取到预期结果。

    • 冉是非 普通会员 3楼

      爬虫报错问题是指在爬取或执行爬虫任务时,爬虫程序在遇到错误或者遇到预期之外的行为时,无法正常执行,导致程序无法正常运行或返回预期结果。以下是一些常见的爬虫报错问题及其解决方案:

      1. HTTP/1.1 404 Not Found:HTTP/1.1 404 Not Found错误通常表示目标URL未找到,可能是由于网络连接问题、网页结构错乱、DNS解析错误、URL语法错误等原因引起的。解决方案包括检查网络连接,确保抓取的URL在有效的网络范围内,或者检查URL结构是否正确,如URL中是否包含路径、查询参数等。

      2. Connection Error:如果爬虫尝试连接到服务器时出现Connection Error,可能是由于服务器拒绝连接、服务器已关闭、服务器端口设置错误、网络连接错误等原因引起的。解决方案包括检查服务器是否开启了允许爬虫访问的端口,确保服务器的网络配置正确,或者检查URL中的连接参数是否正确。

      3. MalformedURLException:MalformedURLException是处理URL语法错误的一种常见错误。URL是一个包含协议、主机名、路径、查询参数、斜杠和字符集合的字符串,如果不正确地构造或解析URL,可能会导致爬虫无法解析或找到目标URL。解决方案包括检查URL中的所有字符是否在规范的URL字符集内,或者检查URL中的路径是否正确,并确保URL的格式符合爬虫使用的协议和端口。

      4. No Content:No Content错误通常表示目标URL中包含的内容已被删除或修改,可能是由于网页结构变化、数据源更新、数据库操作错误等原因引起的。解决方案包括检查目标URL中的内容是否被删除或修改,如果内容被删除,可能需要替换或更新目标URL;如果内容被修改,需要检查修改的目的是什么,如果是为了数据替换,可能需要重新构建或更新目标URL;如果是为了数据增删改查,需要检查修改的内容是否符合爬虫的数据格式和需求。

      5. Timeout Error:Timeout Error通常表示爬虫在执行请求时遇到了网络超时,可能是由于网络连接速度过慢、服务器响应时间过长、服务器服务器端口设置错误等原因引起的。解决方案包括检查网络连接速度和服务器响应时间,如果网络连接速度慢,可能需要增加网络带宽或优化爬虫的网络请求参数;如果服务器响应时间长,可能需要调整服务器端口设置或优化服务器的性能;如果服务器服务器端口设置错误,可能需要重新设置服务器端口或调整服务器的配置。

      6. ParseError:ParseError是处理解析HTML或XML文件时出现的错误。HTML和XML文件中的数据结构和格式可能与爬虫期望的格式不匹配,可能会导致解析错误。解决方案包括检查HTML和XML文件中的数据结构和格式是否与爬虫期望的格式匹配,如果数据结构和格式不匹配,可能需要进行数据替换或修改;如果数据结构和格式已知,可能需要优化HTML和XML文件的解析逻辑。

      7. Uncaught TypeError:Uncaught TypeError是处理Python表达式或函数调用时出现的错误。Python表达式或函数调用可能包含了未定义的变量、函数等错误,可能会导致解析或执行错误。解决方案包括检查Python表达式或函数调用中的变量、函数等是否正确定义,如果变量、函数等未定义,可能需要添加或修改相应的定义;如果变量、函数等已定义,可能需要检查Python表达式或函数调用中的语法是否正确,如果语法错误,可能需要进行语法修正或重新编写Python表达式或函数调用。

      以上是一些常见的爬虫报错问题及其解决方案,具体问题可能需要根据爬虫的具体环境和需求进行调整。在实际爬取过程中,需要对各种可能的爬虫报错情况进行排查和处理,以确保爬虫的正常运行和获取到预期结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部