Python 파충 류 는 대리 IP 를 간단하게 활용 하여 실현 합 니 다.

기능 1:서 라 ip 대리 홈 페이지 의 대리 ip
환경:python 3.8+pycharm
라 이브 러 리:requests,lxml
브 라 우 저:구 글
IP 주소:http://www.xiladaili.com/gaoni/
웹 페이지 원본 분석:
在这里插入图片描述
div 요 소 를 선택 한 후 오른쪽 단 추 를 눌 러 Copy 를 찾 고 하위 메뉴 로 들 어가 Copy Xpath 를 찾 습 니 다.클릭 하면 XPath 로 복사 합 니 다.
在这里插入图片描述
우리 가 복사 한 Xpth 내용 은:/html/body/div/div[3]/div[2]/table/tbody/tr[50]/td[1]
IP 를 찾 을 수 있 지만 프로그램 이 모든 IP 를 자동 으로 기어 오 르 는 데 불리 하 다.구 글 XpathHelp 을 이용 해 테스트 해 보 자.
在这里插入图片描述
위의 그림 에서 알 수 있 듯 이 하나의 Ip 만 일치 합 니 다.우 리 는 조금 만 수정 하면 목적 을 달성 할 수 있 습 니 다.
xpath 규칙 에 관 해 서 는 다음 표를 참고 할 수 있 습 니 다.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
위의 규칙 을 학습 한 후에 우 리 는//*[@class='mt-0 mb-2 table-responsive']/table/tbody/tr/td[1]로 수정 하고 xpthhelp 도 구 를 이용 하여 검증 합 니 다.
在这里插入图片描述
이렇게 하면 우 리 는 전체 페이지 의 Ip 주 소 를 찾 을 수 있 습 니 다.더 많은 IP 를 얻 기 위해 우 리 는 계속 페이지 를 넘 기 고 페이지 넘 기 단 추 를 찾 을 수 있 습 니 다.
在这里插入图片描述
규칙 을 찾 아 한 페이지 를 넘 길 때마다 a 태그 에 있 는 href 연결 주 소 를 1 추가 하면 됩 니 다.python 프로그램 은 for 순환 을 이용 하여 페이지 넘 기 문 제 를 해결 할 수 있 습 니 다.
IP 에이전트 의 질 을 향상 시 키 기 위해 서 우 리 는 평 점 이 높 은 IP 를 기어 올 라 사용 합 니 다.평 점 표시 줄 아래 의 Xpath 경 로 를 찾 습 니 다.여 기 는 더 이상 상세 하 게 소개 하지 않 습 니 다.사고방식 은 위 에서 IP 주 소 를 찾 는 사고방식 과 XPath 규칙 을 참고 하고 과정 은 아래 그림 을 참고 하 십시오.
在这里插入图片描述
Python 코드 구현
코드 는 복사 붙 여 넣 기 를 직접 사용 할 수 있 습 니 다.오류 가 발생 하면 쿠키 를 수정 하 십시오.여 기 는 IP 가 차단 되 는 것 을 방지 하기 위해 프 록 시 ip 을 사용 합 니 다.물론 이곳 의 코드 는 기본 적 인 것 입 니 다.시간 이 있 으 면 대리 풀 로 쓸 수 있 고 여러 가지 임 무 를 수행 할 수 있 습 니 다.물론 다른 사고방식 으로 도 실현 할 수 있 는데,여 기 는 입문 소개 만 한다.이러한 프 록 시 IP 가 있 으 면 파일 로 저장 하거나 데이터베이스 에 저장 할 수 있 습 니 다.실제 사용 상황 에 따라 저장 하지 않 고 목록 변수 에 만 저장 할 수 있 습 니 다.

import requests
from lxml import etree
import time


class XiLaIp_Spider:

  def __init__(self):
    self.url = 'http://www.xiladaili.com/gaoni/'
    self.headers = {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
      'cookie': 'td_cookie=1539882751; csrftoken=lymOXQp49maLMeKXS1byEMMmsavQPtOCOUwy6WIbfMNazZW80xKKA8RW2Zuo6ssy; Hm_lvt_31dfac66a938040b9bf68ee2294f9fa9=1592547159; Hm_lvt_9bfa8deaeafc6083c5e4683d7892f23d=1592535959,1592539254,1592612217; Hm_lpvt_9bfa8deaeafc6083c5e4683d7892f23d=1592612332',
    }
    self.proxy = '116.196.85.150:3128'
    self.proxies = {
      "http": "http://%(proxy)s/" % {'proxy': self.proxy},
      "https": "http://%(proxy)s/" % {'proxy': self.proxy}
    }
    self.list1 = []

  def get_url(self):
    file = open('Ip_Proxy.txt', 'a', encoding='utf-8')
    ok_file = open('OkIp_Proxy.txt', 'a', encoding='utf-8')
    for index in range(50):
      time.sleep(3)
      try:
        res = requests.get(url=self.url if index == 0 else self.url + str(index) + "/", headers=self.headers,
                  proxies=self.proxies, timeout=10).text
      except:
        continue
      data = etree.HTML(res).xpath("//*[@class='mt-0 mb-2 table-responsive']/table/tbody/tr/td[1]")
      # '//*[@id="scroll"]/table/tbody/tr/td[1]'
      score_data = etree.HTML(res).xpath("//*[@class='mt-0 mb-2 table-responsive']/table/tbody/tr/td[8]")
      for i, j in zip(data, score_data):
        # file.write(i.text + '
') score = int(j.text) # ip if score > 100000: self.list1.append(i.text) set(self.list1) file.close() ok_ip = [] for i in self.list1: try: # ip res = requests.get(url='https://www.baidu.com', headers=self.headers, proxies={'http': 'http://' + i}, timeout=10) if res.status_code == 200: # ok_file.write(i + '
') ok_ip.append(i) except: continue ok_file.close() return ok_ip def run(self): return self.get_url() dl = XiLaIp_Spider() dl.run()
파 이 썬 파충류 가 프 록 시 IP 를 간단하게 활용 하 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 파 이 썬 프 록 시 IP 콘 텐 츠 는 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기