Python 은 Selenium 을 사용 하여 바 이 두 검색 을 자동 으로 진행 합 니 다.
물론 누군가가 웹 페이지 를 조작 한 후에 웹 페이지 의 관건 적 인 내용 을 저장 한 응용 을 일률적으로 인터넷 파충류 라 고 부른다.그래,네가 이렇게 내용 을 얻 으 려 면 네 마음대로 해라.하지만 나 는 그것 을 인터넷 로봇 이 라 고 부 르 고 싶다.
제 가 오늘 소개 한 프로젝트 는 Selenium 을 사용 합 니 다.Selenium 은 웹 브 라 우 저 자동 화 를 지원 하 는 일련의 도구 와 라 이브 러 리 의 종합 프로젝트 입 니 다.Selenium 의 핵심 은 WebDriver 입 니 다.명령 집합 을 작성 하 는 인터페이스 로 많은 브 라 우 저 에서 호 환 되 어 실 행 될 수 있 습 니 다.
잡담 은 적 게 하고,경화물 은 안배 하 다.
Selenium 설치
pip 를 사용 하여 Python 의 Selenium 라 이브 러 리 를 설치 할 수 있 습 니 다:pip install selenium
(옵션 가능:프로젝트 를 실행 하고 브 라 우 저 를 제어 하려 면 브 라 우 저 에 지정 한 WebDriver 바 이 너 리 파일 을 설치 해 야 합 니 다.
WebDriver 바 이 너 리 파일 을 다운로드 하여 시스템 PATH 환경 변수 에 넣 습 니 다.)
로 컬 브 라 우 저 버 전의 업그레이드 로 인해 발생 하 는 버 전의 일치 하지 않 는 문제 와 시스템 PATH 환경 변수의 설정 이 비교적 번 거 롭 기 때문에 저 는 webdriver 를 사용 합 니 다.manager,
설치 설치 관리자:
pip install webdriver-manager
코드 를 쓰다도입 모듈:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
우선 우 리 는 클래스 Search 를 정의 합 니 다.Baidu,초기 화 에 주로 사 용 됩 니 다.자동화 절 차 를 정의 하 는 방법;브 라 우 저 닫 기 를 끝 냅 니 다.
class Search_Baidu:
def __init__(self):
def search(self, keyword):
def tear_down(self):
이어서 우 리 는 각 방법의 실현 과정 을 각각 소개 한다.
def __init__(self): # , selenium webdriver
url = 'https://www.baidu.com/' #
self.url = url
options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # ,
options.add_experimental_option('excludeSwitches', ['enable-automation']) # , , Selenium
# chrome , webdriver_manager chrome driver, options
self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options)
self.wait = WebDriverWait(self.browser, 10) # 10s, , , 10
def tear_down(self):
self.browser.close() # ,
다음은 우리 가 브 라 우 저 를 조작 하 는 절 차 를 쓰 고 브 라 우 저 를 열 고 바 이 두 웹 페이지 에 들 어가 검색 키 워드 를 입력 하 는 것 입 니 다:Selenium,검색 결 과 를 기다 리 고 검색 결과 의 제목 과 사 이 트 를 파일 에 저장 합 니 다.
def search(self, keyword):
#
self.browser.get(self.url)
# , 10 ,
search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="kw"]')))
#
search_input.send_keys(keyword)
#
search_input.send_keys(Keys.ENTER)
# 10
self.browser.implicitly_wait(10)
#
results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")
#
with open("search_result.txt","w") as file:
for result in results:
if result.get_attribute("href"):
print(result.get_attribute("text").strip())
#
title = result.get_attribute("text").strip()
#
link = result.get_attribute("href")
#
file.write(f"Title: {title}, link is: {link}
")
점 위치 웹 요소이 안에 중요 한 점 이 있 습 니 다.바로 웹 페이지 요 소 를 어떻게 누 르 느 냐 하 는 것 입 니 다.
예 를 들 면:
search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="kw"]')))
그리고:
self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")
예 를 들 어 택배 기 사 는 주 소 를 통 해 당신 의 집 을 찾 아 택 배 를 보 냅 니 다.이곳 의 XPATH 와 CSS Selector 는 바로 웹 요소 의 주소 입 니 다.그러면 어떻게 얻 을 수 있 습 니까?첫 번 째 는 Chrome 자체 개발 자 도구 입 니 다.단축 키 F12 를 누 를 수도 있 고 다음 그림 에서 찾 을 수도 있 습 니 다.
그리고 바 이 두 검색 상자 에서 오른쪽 단 추 를 누 르 십시오:
입력 상자 의 HTML 요 소 를 찾 습 니 다.
HTML 요소 에서 오른쪽 단 추 를 누 르 면 XPath 주 소 를 복사 합 니 다.
이것 은 비교적 간단 한 웹 페이지 요 소 를 찾 는 방법 이다.다음 에 우리 가 검색 결과 요 소 를 찾 을 때 번 거 로 움 을 만 났 습 니 다.다음 그림:
우 리 는 모든 요 소 를 단독으로 찾 을 수 없 으 며,규칙 을 찾 아야 합 니 다.한 번 에 모든 검색 결 과 를 찾 은 후에 하나의 list 로 돌아 가 야 합 니 다.우 리 는 이 list 를 옮 겨 다 닐 수 있 습 니 다.이것 은 어떻게 실현 합 니까?
다음,우 리 는 큰 신 구 를 요청 합 니 다:Selector Gadget
Selector Gadget 은 CSS Selector 생 성기 입 니 다.여러분 은 그의 공식 문서 에서 구체 적 인 사용 설명 을 찾 을 수 있 습 니 다.제 가 간단하게 소개 하 겠 습 니 다.
우선 Selector Gadget 을 시작 하고 아이콘 을 클릭 하 십시오.
브 라 우 저 에 다음 상자 가 나타 납 니 다:
그런 후에 우 리 는 웹 페이지 에서 마우스 왼쪽 단 추 를 눌 러 서 우리 가 찾 아야 할 요 소 를 클릭 합 니 다.
그리고 페이지 는 아래 모양 으로 변 합 니 다.
모든 노란색 부분 설명 이 선택 되 었 습 니 다.우리 가 원 하지 않 는 요 소 를 오른쪽 단 추 를 누 르 면 빨간색 으로 변 하고 제거 되 었 음 을 설명 합 니 다.만약 우리 가 또 필요 로 하 는 요 소 를 선택 하지 않 았 다 면,우 리 는 왼쪽 단 추 를 눌 러 서 그것 을 녹색 으로 바 꾸 었 을 것 이다.마지막 으로 우리 가 선택 하고 자 하 는 페이지 요 소 는 모두 녹색 이나 노란색 으로 변 했다.다음 과 같은 그림 이다.
우 리 는 틀 안의 내용 을 CSS Selector 로 복사 할 수 있다.
CSS Selector 를 통 해 모든 검색 결 과 를 찾 습 니 다.
results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")
여기 서 우 리 는 이렇게 간단 한 애플 리 케 이 션 을 실현 했다.사실은 selenium 은 우리 가 웹 페이지 요 소 를 자동 으로 조작 하 는 데 도움 을 주 는 것 이다.그래서 우 리 는 웹 페이지 요 소 를 포 지 셔 닝 하 는 것 이 중요 하 다.본 고 는 너 에 게 약간의 도움 을 주 기 를 바란다.다음은 제 가 코드 를 첨부 하 겠 습 니 다.
from datetime import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
class Search_Baidu:
def __init__(self):
url = 'https://www.baidu.com/'
self.url = url
options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # ,
options.add_experimental_option('excludeSwitches', ['enable-automation']) # , , Selenium
self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options)
self.wait = WebDriverWait(self.browser, 10) # 10s
def search(self, keyword):
#
self.browser.get(self.url)
# , 10 ,
search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="kw"]')))
#
search_input.send_keys(keyword)
#
search_input.send_keys(Keys.ENTER)
# 10
self.browser.implicitly_wait(10)
#
results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")
#
with open("search_result.txt","w") as file:
for result in results:
if result.get_attribute("href"):
print(result.get_attribute("text").strip())
#
title = result.get_attribute("text").strip()
#
link = result.get_attribute("href")
#
file.write(f"Title: {title}, link is: {link}
")
def tear_down(self):
self.browser.close()
if __name__ == "__main__":
search = Search_Baidu()
search.search("selenium")
search.tear_down()
파 이 썬 이 Selenium 을 사용 하여 자동 으로 바 이 두 검색 을 진행 하 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 파 이 썬 Selenium 자동 바 이 두 검색 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.