分享一个php脚本,使用代理ip访问网页,抓取数据方便~什么情况下会用到代理IP?比如你要从一个网站抓取数据,这个网站有100万条内容。他们设置了IP限制,每个IP每小时只能抓取1000条。如果单个IP受限,采集完成需要40天左右,如果使用代理IP,不断切换IP,可以突破每小时1000个的频率限制,从而提高效率。脚本开始:importrequestsfromlxmlimportetreedefget_proxy_list(gourl):url=gourlpayload={}headers={"User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.100Safari/537.36",'Accept':'application/json,text/javascript,*/*;q=0.01',}response=requests.request("GET",url,headers=headers,data=payload)res=[]_=etree.HTML(response.text)type_dct={"HTTP":"http://","HTTPS":"https://"}data_list=_.xpath("//tbody/tr")fordata_list中的数据:ip=data.xpath("./td[1]/text()")[0]port=data.xpath("./td[2]/text()")[0]type=data.xpath("./td[4]/text()")[0]res.append(type_dct[type]+ip+':'+port)returnres测试代理defcheck(proxy):href='http://www.baidu.com/'if'https'inproxy:proxies={'https':proxy}else:proxies={'http':proxy}headers={'User-Agent':'Mozilla/5.0(Macintosh;IntelMacOSX11_2_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/90.0.4396.0Safari/537.36'}尝试:r=requests.get(href,proxies=proxies,timeout=5,headers=headers)ifr.status_code==200:returnTrueexcept:returnFalseifname=='__main__':proxy_list=get_proxy_list(gourl)print(proxy_list)forpinproxy_list:print(p,check(p))复制代码后,将URL传递给get_proxy_list函数,就可以使用了。比如“get_proxy_list(https://www.jxmtjt.com/xy/t6628956009664610563)”代码我一直在用,大家也可以想想,百度搜索免费代理ip获取网址~
