python - 如何为爬虫构建代理池
巴扎黑
巴扎黑 2017-04-18 09:06:55
0
3
794

为了避免爬虫被封 IP ,网上搜索教程说需要建立代理池。但是付费代理都好贵。。。不过好在网上已经有不少免费提供代理的网站了。因此,我打算写个爬虫去获取这些免费 IP ~

策略步骤

  1. 用种子关键词例如“代理 IP ”在各个搜索引擎上搜索,获取候选 URL

  2. 爬取候选 URL ,将代理地址储存下来

  3. 验证代理地址,将可用的代理地址放入代理池

难点

  1. 如何去验证维护这些代理地址

  2. 如何知道哪些代理地址适合哪些网站(可用性,响应时间)

  3. 效率问题(之前写过简单的验证脚本,但是效率非常低)

小伙伴们有不有什么好的办法能解决这些问题呢?

巴扎黑
巴扎黑

모든 응답(3)
刘奇

적어 보겠습니다. 이전에도 같은 작업을 수행한 적이 있었고, 그 당시에는 에이전트도 필요했습니다. 그런 다음 자동 검색 및 자동 업데이트를 수행하기 위해 자체 크롤러를 작성했습니다.

프록시 주소의 경우 크롤러가 웹사이트를 자동으로 선택하도록 하지 않고 무료 프록시를 제공하는 여러 웹사이트를 수동으로 선별한 다음 다른 프록시 웹사이트를 크롤링하도록 일부 크롤러를 작성했습니다.

당신이 언급한 어려움에 대한 답변:

  1. 확인을 위해 처음 크롤링된 주소는 사용 가능한지 여부를 직접 확인합니다. 에이전트의 신뢰성이 낮기 때문에 데이터베이스에 저장되거나 지속됩니다. 캡처된 에이전트가 사용 가능한지 정기적으로 확인해야 합니다. uWSGI 서버에서 예약된 작업이 시작되며, 이는 30분마다 확인되며 매 시간마다 새 에이전트가 캡처됩니다. 물론 예약된 작업을 사용할 수도 있습니다. 크론탭과 같은

  2. 캡처된 프록시를 사용하여 방문해야 하는 웹사이트에 직접 접속하세요. 웹사이트마다 다른 프록시를 제공해야 하는 경우 관련 확인 정보를 함께 확인하고 저장할 수 있습니다.

  3. 효율성 문제는 다루기 쉽습니다. 네트워크 확인 작업은 모두 I/O 집약적인 작업이므로 코루틴, 멀티 스레드 및 멀티 프로세스로 해결할 수 있습니다. Python의 GIL은 멀티 스레딩에 영향을 미치지 않습니다. I/O 집약적인 작업의 효율성을 향상합니다
  4. multithreading-spider 이전에 간단한 프록시 크롤러를 만들기 위해 멀티스레딩과 대기열을 사용했습니다. src의 데모는 간단한 생산자-소비자 모델을 사용합니다. 확인 에이전트 가용성 크롤러는 소비자 역할을 하며 특정 작업 진행 상황을 표시할 수 있습니다.
洪涛

Python 기반 프록시 풀을 사용해 볼 수 있습니다.
인터넷에서 프록시 리소스를 자동으로 캡처하고 확장을 촉진합니다.
https://github.com/WiseDoge/P...

左手右手慢动作

이 프로젝트를 살펴보실 수 있습니다: https://github.com/jhao104/pr...

오픈소스 프록시 풀 서비스

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿