Python 타 오 바 오 상품 정보 란 의 실현
7607 단어 Python정보 를 입수 하 다
1.1、Selenium
Selenium 은 강력 한 오픈 소스 웹 기능 테스트 도구 시리즈 로 테스트 세트 를 읽 고 테스트 와 테스트 결 과 를 기록 하 며 실제 사용자 조작 을 모 의 할 수 있 습 니 다.이 는 페이지 탐색,링크 클릭,문자 입력,폼 제출,마우스 이벤트 트리거 등 을 포함 하고 페이지 결 과 를 여러 가지 검증 할 수 있 습 니 다.즉,테스트 사례 에서 기대 하 는 사용자 행동 과 결 과 를 모두 묘사 하면 우 리 는 자동화 운행 이 가능 한 기능 테스트 세트 를 얻 을 수 있다.
1.2、ActionChains
Action chains 는 selenium 에서 마우스 와 관련 된 작업 을 전문 적 으로 처리 합 니 다.예 를 들 어 마우스 이동,마우스 단추 조작,버튼 과 컨 텍스트 메뉴(마우스 오른쪽 단추)의 상호작용 입 니 다.이것 은 더 복잡 한 동작 을 하 는 데 매우 유용 하 다.예 를 들 어 서 스 펜 션 과 드래그 앤 드 롭 이다.
1.3、time
현재 시간의 타임 스탬프 되 돌리 기
1.4、lxml
lxml 는 Python 라 이브 러 리 입 니 다.XML 과 HTML 파일 을 쉽게 처리 할 수 있 고 웹 기어 오 르 기 에 도 사용 할 수 있 습 니 다.시중 에는 기 존의 XML 해석 기 가 많 지만 더 좋 은 결 과 를 얻 기 위해 개발 자 들 은 가끔 자신의 XML 과 HTML 해석 기 를 만 드 는 것 을 선 호한 다.이때 lxml 라 이브 러 리 가 도움 이 되 었 습 니 다.이 라 이브 러 리 의 주요 장점 은 사용 하기 쉽 고 대형 문 서 를 분석 할 때 속도 가 매우 빠 르 며 압축 파일 도 매우 좋 으 며 간단 한 변환 방법 을 제공 하여 데 이 터 를 Python 데이터 형식 으로 변환 하여 파일 작업 을 더욱 쉽게 하 는 것 이다.
1.5、csv
csv 파일 형식 은 일반적인 스프 레 드 시트 와 데이터베이스 가 져 오기 내 보 내기 형식 입 니 다.최근 에 제 가 RPC 를 호출 하여 서버 데 이 터 를 처리 할 때 데 이 터 를 압축 파일 로 만들어 야 하기 때문에 이 편리 한 형식 을 사 용 했 습 니 다.
1.6、requests
Requests 라 이브 러 리 는 우아 하고 간단 한 Python HTTP 라 이브 러 리 로 주로 HTTP 요청 을 보 내 고 처리 합 니 다.
부분 코드 분석
Chrome 드라이브 를 불 러 오고 기어 오 르 는 주 소 를 동적 으로 해석 합 니 다.
# api
def commonsdk(self,url):
browser = webdriver.Chrome('D:/chromedriver.exe')
try:
browser.get(url)
except Exception as e:
browser.execute_script('window.stop()') #
print(e, 'dynamic web load timeout')
return browser;
아 날로 그 로그 인 실현타 오 바 오 로그 인 인터페이스의 url 폼 상 자 를 찾 은 다음 에 자신의 사용자 이름과 비밀 번 호 를 입력 한 다음 에 마우스 클릭 이 벤트 를 모 의 한 다음 에 폼 정 보 를 제출 하여 사용자 로그 인 을 실현 합 니 다.
#
def logon(self,url,a_href_list_next):
username = " "
password = " "
browser1 = self.commonsdk(url)
#
browser1.find_element_by_id('fm-login-id').send_keys(username)
browser1.find_element_by_id('fm-login-password').send_keys(password)
#
browser1.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
#
self.Buy_information(a_href_list_next,browser1)
사 이 드 바 목록 오 르 기1.우선 디 렉 터 리 분류 표시 줄 을 찾 습 니 다.마우스 커서 는 선택 한 표시 줄 로 이동 합 니 다.그 다음 에 숨겨 진 div 가 나타 납 니 다.(마우스 서 스 펜 션 이벤트 가 필요 합 니 다)action.moveto_element(li_list).perform()은 이 기능 을 실현 했다.
2.그리고 자신 이 올 라 가 야 할 사 이 드 바 의 한 줄 또는 여러 줄 을 찾 아 마우스 서 스 펜 션 사건 을 실현 한 후에 그 내용 을 얻 을 수 있 습 니 다.
3.하이퍼링크 를 가 져 와 다음 화면 에 들 어가 기
#
def List(self,url):
browser = self.commonsdk(url)
#ActionChains 、 、
action = ActionChains(browser)
li_list = browser.find_elements_by_css_selector('.service-bd li')[1]
# ,
action.move_to_element(li_list).perform()
time.sleep(5)
# div
div_list = browser.find_element_by_css_selector('.service-fi-links')
#
h5_list = div_list.find_elements_by_css_selector('h5')
#
p_list = div_list.find_elements_by_css_selector('p')
# a
a_href_list = div_list.find_elements_by_css_selector('a')
# a
a_href_list_next = div_list.find_elements_by_css_selector('a')[1].get_attribute('href')
print(li_list.text)
for j in range(len(p_list)):
if j<len(p_list):
print(h5_list[j].text)
print(p_list[j].text)
for i in range(len(a_href_list)):
print(a_href_list[i].get_attribute('href'))
#
logon = browser.find_element_by_id('J_SiteNavBd')
#
logon_url = logon.find_element_by_css_selector('a').get_attribute('href')
#
browser.close()
self.logon(logon_url,a_href_list_next)
상품 정보 획득1.여기 서 사용 하 는 포 지 셔 닝 방식 은 Xpath 방식 으로 절대적 인 포 지 셔 닝 을 사용 하여 라벨 의 위 치 를 가 져 옵 니 다.
#
def Buy_information(self,url,browser):
browser.get(url)
div_list = browser.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]')
img = div_list.find_element_by_css_selector('img')
img_url = "https:"+img.get_attribute('data-src')
price = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[1]/div[1]').text
number = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[1]/div[2]').text
shoping_information = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[2]').text
shop = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[3]/div[1]/a').text
adress = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[3]/div[2]').text
path = self.img_baocun(img_url)
data={
' ':path,
' ':price,
' ':number,
' ':shoping_information,
' ':shop,
' ':adress
}
self.write_dictionary_to_csv(data,'information')
사진 다운로드가 져 온 그림 의 url 을 통 해 지정 한 폴 더 에 그림 을 다운로드 합 니 다.
#
def img_baocun(self,url):
root = " "//
path = root + url.split('?')[0].split('/')[-1].strip('')# jpg
# ,
if not os.path.exists(root):
os.mkdir(root)
# ,
if not os.path.exists(path):
r = requests.get(url)
r.raise_for_status()
with open(path,'wb') as f:
f.write(r.content)
return path
올 라 가 야 할 정 보 를 csv 파일 에 기록 하여 보기 편 합 니 다.1.상품 정 보 는 csv 파일 에 사전 형식 으로 기록 하여 쉽게 볼 수 있 습 니 다.
# ( ) csv
def write_dictionary_to_csv(self,dict,filename):
#
file_name='{}.csv'.format(filename)
with open(file_name, 'a',encoding='utf-8') as f:
file_exists = os.path.isfile(filename)
#delimiter( )
w =csv.DictWriter(f, dict.keys(),delimiter=',', quotechar='"', lineterminator='
',quoting=csv.QUOTE_ALL, skipinitialspace=True)
if not file_exists :
w.writeheader()
w.writerow(dict)
print(' csv !')
3.절차 적 사고1.먼저 사 이 드 바 의 위 치 를 정 한 다음 action.move 를 사용 합 니 다.to_element(li_list).perform()의 방법 은 마우스 의 동적 서 스 펜 션 을 실현 하여 숨겨 진 div 를 표시 하고 정 보 를 얻 습 니 다.
2.그 다음 에 아 날로 그 로그 인 기능 을 실현 하고 계 정 에 로그 인하 여 그 중의 상품 정 보 를 얻 습 니 다(타 오 바 오의 소매치기 체제 로 인해 여러 번 로그 인 하면 사용자 가 코드 를 스 캔 하여 로그 인 할 수 있 습 니 다.이 기능 은 아직 실현 되 지 않 았 습 니 다)
3.상품 정보의 획득 은 Xpath 의 절대적 인 포 지 셔 닝 방식 으로 얻 을 수 있 습 니 다.
Xpath 사용 방법:
오른쪽 단 추 를 누 르 면 위치 추적 이 필요 한 탭->Copy 옵션 선택->Copy Xpath
4.발전 공간
1.타 오 바 오 소매치기 메커니즘 의 문 제 를 해결한다전송 문
2.파일 의 기록 은 다른 방식 으로 바 꿉 니 다.
파 이 썬 이 타 오 바 오 상품 정보 란 을 기어 오 르 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 이 타 오 바 오 상품 정 보 를 기어 오 르 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.