• python爬虫--代理.让你的ip在坚挺一会!!


    代理

    代理简述

    代理服务器:实现请求转发,从而可以实现更换请求的ip地址
    	在requests中如何将请求的ip进行更换
    
    代理的匿名度:
    	透明:服务器知道你使用了代理并且知道你的真实ip
    	匿名:服务器知道你使用了代理,但是不知道你的真实ip
    	高匿:服务器不知道你使用了代理,更不知道你的真实ip
    
    代理的类型:
    	http:该类型的代理只可以转发http协议的请求
    	https:只可以转发https协议的请求
    
    免费代理ip的网站
        快代理
        西祠代理
        goubanjia
        代理精灵(推荐):http://http.zhiliandaili.cn/
    
    在爬虫中遇到ip被禁掉如何处理?
        使用代理
        构建一个代理池
        拨号服务器
    

    案例

    import requests
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
    }
    
    url = 'https://www.baidu.com/s?wd=ip'
    #proxies={'http/https':'ip:port'}
    page_text = requests.get(url=url,headers=headers,proxies={'https':'1.197.203.187:9999'}).text
    with open('ip.html','w',encoding='utf-8') as fp:
        fp.write(page_text)
        
    from lxml import etree
    all_ips = [] #列表形式的代理池
    proxy_url = 'http://t.11jsq.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&groupid=0&qty=52&time=1&pro=&city=&port=1&format=html&ss=5&css=&dt=1&specialTxt=3&specialJson=&usertype=2'
    #在购买完代理ip后生成的HTML页面的url
    proxy_page_text = requests.get(url=proxy_url,headers=headers).text  #爬取这个页面中的数据,也就是购买后的ip代理
    tree = etree.HTML(proxy_page_text)
    proxy_list = tree.xpath('//body//text()')
    
    for ip in proxy_list:
        dic = {'https':ip}
        all_ips.append(dic)
    all_ips
    

    爬取西祠代理中的免费代理ip

    import requests
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
    }
    
    url = 'https://www.xicidaili.com/nn/%d'
    free_proxies = []
    for page in range(1,30):
        new_url = format(url%page)
        page_text = requests.get(new_url,headers=headers,proxies=random.choice(all_ips)).text # all_ips在上面的代码中
        tree = etree.HTML(page_text)
        tr_list = tree.xpath('//*[@id="ip_list"]//tr')[1:] #xpath表达式中不可以出现tbody
        for tr in tr_list:
            ip = tr.xpath('./td[2]/text()')[0]
            port = tr.xpath('./td[3]/text()')[0]
            t_type = tr.xpath('./td[7]/text()')[0]
            
            dic = {
                'ip':ip,
                'port':port,
                'type':t_type
            }
            free_proxies.append(dic)
        print('第{}页爬取完毕!!!'.format(page))
    print(len(free_proxies))
    
  • 相关阅读:
    [转]命令行下常用网络命令解释大全
    查看计算机时间的命令行
    线程已被中止 “Thread was being aborted”
    SharePoint 2007备份还原小结
    作业
    .NET中线程同步相关的一些类
    SharePoint对于Workflow的历史信息清理的要点
    一些操作符
    for path多行变一列
    MERGE同步
  • 原文地址:https://www.cnblogs.com/tangjian219/p/11988724.html
Copyright © 2020-2023  润新知