Python 타 오 바 오 상품 정보 란 의 실현

1.관련 지식
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.파일 의 기록 은 다른 방식 으로 바 꿉 니 다.
파 이 썬 이 타 오 바 오 상품 정보 란 을 기어 오 르 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 이 타 오 바 오 상품 정 보 를 기어 오 르 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기