Python 파충 류 는 대리 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 콘 텐 츠 는 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.