Python爬取代理IP,并存入数据库。

这篇文章主要内容是对西刺网站上的免费IP进行爬取和验证,来保证对其他项目的需求。

通过查看元素,ip地址、端口、类型都可以在一个tr里找到。


目标网站
  • 爬取ip,端口,协议三个信息,并放入队列,等待检查加入数据库。
def get_info(self, q):
    page = 1
    while True:
        url = 'http://www.xicidaili.com/nn/%d' % (page)
        req = requests.get(url, headers=self.header)
        soup = BeautifulSoup(req.text, 'lxml')
        trs = soup.find('table', id='ip_list').find_all('tr')
        for tr in trs[1:]:
            ip = tr.contents[3].text
            port = tr.contents[5].text
            procotol = tr.contents[11].text
            q.put((ip, port, procotol.lower()))
        page += 1

  • 从队列中取出信息,并用它访问一个网站,如果成功把它存到数据库中为可用IP。
def check(self, q, lock):
    while True:
        data = q.get()
        try:
            req = requests.get('http://www.baidu.com',
                               proxies={'%s' % (data[2]): '%s://%s:%s'
                                         % (data[2], data[0], data[1])},
                               timeout=2, headers=self.header,
                               cookies=self.cookie)
            if req.status_code == 200:
                print(data)
                tools.i_ip(data)
            else:
                print('not200', data)
        except Exception as e:
            print(e, 'erro', data)
            pass

GitHub开源地址:https://github.com/matianhe/crawler

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,747评论 6 427
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,147评论 19 139
  • 和家人的谈话,我感到深深的无力感!!!
    静梦若璃阅读 1,288评论 0 0
  • 月光从不向我们展示生活的艰辛。山坡好像在银色月光下披上柔和的轻纱。在月光的照耀下,海水显得碧蓝而静谧。沉浸在月光中...
    清清是颗小太阳阅读 3,647评论 0 1
  • 工作中更要注重综合性绩效工作,在我看来,团队合作,尊重差异比一个人工作来的效果更为显著。要掌握1+1>3的工作方法...
    临淄茂业DDM王春梅阅读 1,571评论 0 0

友情链接更多精彩内容