最好的方式是:用多线程方式,使用代理去访问某个网站,然后输出可用的代理。
python 爬虫 ip池怎么做? - Kaito的回答 - 知乎
https://www.zhihu.com/question/47464143/answer/124035743
嗯知道关键词了,搜索「多线程验证ip」,非常多结果,选择自己能看懂思路的,大概知道哪一部分是干什么的就行。
我选择了这个,他的程序结构最简单,思路最容易看懂。
http://www.cnblogs.com/sjzh/p/5990152.html
这是他的源程序,模仿的第一步是分析这个源程序,看看这个源程序方不方便改成我要的功能。
看下结构就行,程序到大概是两部分,第一部分抓取ip,第二部分验证ip。我们自己有抓取ip的程序所以前面可以不要,列表proxys[]用来存储爬取的ip并且传递给第二部分使用,那把我们爬取的ip复制到这里就行了,注意看看格式,proxy_temp = {"http":proxy_host}人家的格式是字典形式的,OK为了避免改第二部分的程序,我们把ip也改成这种格式,对后面的程序就没有影响了。
把我们的ip_list复制过来,修改格式,然后把一下读写操作都去掉,我们不要读写。运行一下
OK,有错误,没事,有错误就对了,通常我们找到的程序都不能直接用,我们试试把提示的错误改掉,看看能不能解决。
搜索「fixture 'i' not found」
我搜索了很多结果,都没有直接告诉我答案,我都准备换一个代码了,我突然想到搜索过程中错误提示是跟一个叫pytest的关键词一起出现,会不会是函数名不能要test?
终于解决了,如果没有想到我会怎么做?我会换一个程序继续修改。模仿会出现各种问题,学习也是在解决问题中进行的,所以遇到问题是好事,如果你复制粘贴后就实现了你的功能,那你其实学到的就很少,但是如果你遇到各种问题,并且解决了一部分,即使还没成功,你已经在进步了。这次我是再也不会忘记函数名不能叫test了。
最后只需要把我们需要的内容打印出来即可。
完成了功能,高兴之余别忘了再看看程序,这个程序大概意思是,有多少个ip就创建多少个线程,然后每个线程都运行的是iptest(i)这个函数,就等于是同时运行着多个iptest(i)函数,所以虽然我还不知道线程的一些知识,是不是我修改iptest(i)函数,就可以得到并行运行的其他功能呢?又可以做很多有意思的改进了。
到这里我们的公式转图片程序的半自动化功能就全部实现了,加上这篇共3篇文章,纪录了我从小白一步一步模仿实现自己的爬虫功能。
你现在有了爬取ip,多线程验证等手段,你已经可以做一个你自己想要的功能了,还等什么燥起来吧。
领取专属 10元无门槛券
私享最新 技术干货