极简代理IP爬取代码——Python爬取免费代理IP

这两日又捡起了许久不碰的爬虫知识,原因是亲友在朋友圈拉人投票,点进去一看发现不用登陆或注册,觉得并不复杂,就一时技痒搞一搞,看看自己的知识都忘到啥样了。

分析一看,其实就是个post请求,需要的信息都在网页中,唯一的问题就是网站做了IP限制,一个IP只能投一票。

在GitHub上看到了star最高的代理IP池项目,但是由于大佬爬取的代理没有区分http和https,所以使用起来可用率就进一步降低了。

大概看了一下大家经常爬取代理ip的网址,有一个是专门列出的HTTP类型的代理,稍微分析了一下页面,靠着自己快忘完了的知识,写了一个极简的爬取方案。代码如下:

import requests
from bs4 import BeautifulSoup

def proxy_list():
    url = 'https://www.xicidaili.com/wt'
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
    r = requests.get(url = url,headers = headers)
    s = BeautifulSoup(r.text,'lxml')
    tr_list = s.select('tr[class="odd"]')
    proxy_list = []
    for tr in tr_list:
        ip = tr.select('td')[1].text
        potal = tr.select('td')[2].text
        proxy_list.append('http://'+ip+':'+potal)
    return proxy_list

该网站只做了ua限制,不加ua是会503的,加上ua即可。当然爬取下来的也不是都可以使用,需要做进一步验证才行。

分页功能就不用多说了,较为简单,可以自行DIY。不得不说,requests+BeautifulSoup真好用,入门必备。

猜你喜欢

转载自www.cnblogs.com/mathbox/p/11089424.html