简单介绍下一个chrome Xpath工具
xpath详解
个人还一个小窍门在我们浏览器开发者模式里快捷键f12如下图我想要拿到这句话的xpath路径
先点击左下角那个小箭头然后点你想要的那句话底部就会出来对应的标签,然后我们右键那个标签会出现一个copy然后选择copy xpath我们就成功拿到我们想要的那个路径了,当然这样拿到的路径是繁琐的,还是要自己真正掌握xpath.下面上代码爬取西刺代理的高匿IP并检测IP的有效性,因为很多免费的IP是不能用的
import time
import requests
from lxml import etree
def get_all_proxy():
#观察西刺代理的高匿页面翻页时候是每页从1往上加的一共3602页遍历页面
for s in range(1,3603):
url = "https://www.xicidaili.com/nn/" + str(s)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
response = requests.get(url, headers=headers)
#保存西刺代理页面xcdl.html
with open('xcdl.html', 'wb') as f:
f.write(response.content)
html_ele = etree.HTML(response.text)
#xpath拿到IP和端口路径
ip_eles = html_ele.xpath('//tr/td[2]/text()')
port_ele = html_ele.xpath('//tr/td[3]/text()')
print(len(ip_eles))
print(len(port_ele))
#把IP和端口添加到列表里
proxy_list = []
for i in range(0,len(ip_eles)):
proxy_str = 'http://' + ip_eles[i] + ':' + port_ele[i]
proxy_list.append(proxy_str)
return proxy_list
#利用访问百度测试IP有效性
def check_all_proxy(proxy_list):
valid_proxy_list = []
for proxy in proxy_list:
url = 'http://www.baidu.com/s?wd=ip'
proxy_dict = {
'http': proxy
}
try:
response = requests.get(url, proxies=proxy_dict, timeout=1)
if response.status_code == 200:
print('代理可用:' + proxy)
valid_proxy_list.append(proxy)
else:
print('代理超时')
except:
pass
print('代理不可用--------------->')
return valid_proxy_list
#检测时间
if __name__ == '__main__':
start_time = time.time()
proxy_list = get_all_proxy()
valid_proxy_list = check_all_proxy(proxy_list)
end_time = time.time()
print('--'*30)
print(valid_proxy_list)
print('耗时:' + str(end_time-start_time))