zoukankan      html  css  js  c++  java
  • python 爬虫由于网络或代理不能用导致的问题处理方法

    平时在爬取某些网页的时候,可能是由于网络不好或者代理池中的代理不能用导致请求失败。此时有们需要重复多次去请求,python中有现成的,相应的包供我们使用:

    1. 我们可以利用retry模块进行多次请求,如果全部都失败才报错。当然使用retry库之前也需要先安装,eg:
    import requests
    
    from retrying import retry
    
    # 这里的headers使用的是手机版的
    m_headers = {
        "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
    }
    
    @ retry(stop_max_attempt_number = 10)  #让被装饰的函数反复执行10次,10次全部报错才会报错, 中间有一次正常就继续往下走
    def parse_url1(url):
        response = requests.get(url, headers=m_headers, timeout=5)
        return response.content.decode()
    
    # 真正的url请求函数
    def parse_url(url):
        try:
            html_str = parse_url1(url)
        except:
            html_str = None
        return html_str
    
    if __name__ == '__main__': 
        url = "http://www.baidu.com"
        print(parse_url(url))
    
  • 相关阅读:
    Meterpreter
    CHM木马
    浅析ARP协议及ARP攻击
    python绝技 — 使用PyGeoIP关联IP地址和物理位置
    python虚拟环境virtualenv的安装与使用
    python调用nmap探测局域网设备
    提权
    Nexpose
    docker安装使用
    一些渗透测试练习环境介绍
  • 原文地址:https://www.cnblogs.com/lpdeboke/p/12912269.html
Copyright © 2011-2022 走看看