웹 프론트엔드 JS 튜토리얼 셀레늄을 사용하여 Taobao 제품 정보 캡처

셀레늄을 사용하여 Taobao 제품 정보 캡처

Mar 23, 2018 pm 04:38 PM
selenium 정보 상품

이번에는 셀레늄을 사용하여 타오바오 제품 정보를 캡처하는 방법을 소개하겠습니다. 셀레늄을 사용하여 타오바오 제품 정보를 캡처할 때의 주의 사항은 무엇입니까? 다음은 실제 사례입니다.

Taobao 페이지는 데이터를 로드하는 데 많은 js를 사용하므로 셀레늄을 사용하여 크롤링하는 것이 더 쉽습니다. 테스트 도구로 셀레늄은 주로 창 없는 브라우저 phantomjs와 함께 사용됩니다.

import re
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
'''
wait.until()语句是selenum里面的显示等待,wait是一个WebDriverWait对象,它设置了等待时间,如果页面在等待时间内
没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,也可以说程序每隔xx秒看一眼,如果条件
成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
1.presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p')
2.element_to_be_clickable 元素可点击
3.text_to_be_present_in_element 某个元素文本包含某文字
'''
# 定义一个无界面的浏览器
browser = webdriver.PhantomJS(
 service_args=[
  '--load-images=false',
  '--disk-cache=true'])
# 10s无响应就down掉
wait = WebDriverWait(browser, 10)
#虽然无界面但是必须要定义窗口
browser.set_window_size(1400, 900)
def search():
 '''
 此函数的作用为完成首页点击搜索的功能,替换标签可用于其他网页使用
 :return:
 '''
 print('正在搜索')
 try:
  #访问页面
  browser.get('https://www.taobao.com')
  # 选择到淘宝首页的输入框
  input = wait.until(
   EC.presence_of_element_located((By.CSS_SELECTOR, '#q'))
  )
  #搜索的那个按钮
  submit = wait.until(EC.element_to_be_clickable(
   (By.CSS_SELECTOR, '#J_TSearchForm > p.search-button > button')))
  #send_key作为写到input的内容
  input.send_keys('面条')
  #执行点击搜索的操作
  submit.click()
  #查看到当前的页码一共是多少页
  total = wait.until(EC.presence_of_element_located(
   (By.CSS_SELECTOR, '#mainsrp-pager > p > p > p > p.total')))
  #获取所有的商品
  get_products()
  #返回总页数
  return total.text
 except TimeoutException:
  return search()
def next_page(page_number):
 '''
 翻页函数,
 :param page_number:
 :return:
 '''
 print('正在翻页', page_number)
 try:
  #这个是我们跳转页的输入框
  input = wait.until(EC.presence_of_element_located(
   (By.CSS_SELECTOR, '#mainsrp-pager > p > p > p > p.form > input')))
  #跳转时的确定按钮
  submit = wait.until(
   EC.element_to_be_clickable(
    (By.CSS_SELECTOR,
     '#mainsrp-pager > p > p > p > p.form > span.J_Submit')))
  #清除里面的数字
  input.clear()
  #重新输入数字
  input.send_keys(page_number)
  #选择并点击
  submit.click()
  #判断当前页是不是我们要现实的页
  wait.until(
   EC.text_to_be_present_in_element(
    (By.CSS_SELECTOR,
     '#mainsrp-pager > p > p > p > ul > li.item.active > span'),
    str(page_number)))
  #调用函数获取商品信息
  get_products()
 #捕捉超时,重新进入翻页的函数
 except TimeoutException:
  next_page(page_number)
def get_products():
 '''
 搜到页面信息在此函数在爬取我们需要的信息
 :return:
 '''
 #每一个商品标签,这里是加载出来以后才会拿网页源代码
 wait.until(EC.presence_of_element_located(
  (By.CSS_SELECTOR, '#mainsrp-itemlist .items .item')))
 #这里拿到的是整个网页源代码
 html = browser.page_source
 #pq解析网页源代码
 doc = pq(html)
 items = doc('#mainsrp-itemlist .items .item').items()
 for item in items:
  # print(item)
  product = {
   'image': item.find('.pic .img').attr('src'),
   'price': item.find('.price').text(),
   'deal': item.find('.deal-cnt').text()[:-3],
   'title': item.find('.title').text(),
   'shop': item.find('.shop').text(),
   'location': item.find('.location').text()
  }
  print(product)
def main():
 try:
  #第一步搜索
  total = search()
  #int类型刚才找到的总页数标签,作为跳出循环的条件
  total = int(re.compile('(\d+)').search(total).group(1))
  #只要后面还有就继续爬,继续翻页
  for i in range(2, total + 1):
   next_page(i)
 except Exception:
  print('出错啦')
 finally:
  #关闭浏览器
  browser.close()
if name == 'main':
 main()
로그인 후 복사

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

Express 및 Koa2 사용에 대한 자세한 설명

JS Toutiao 모바일 홈페이지 인터페이스 모방

HTML 구현을 위한 Vue 열거형

위 내용은 셀레늄을 사용하여 Taobao 제품 정보 캡처의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Microsoft Word에서 작성자 및 마지막 수정 정보를 제거하는 방법 Microsoft Word에서 작성자 및 마지막 수정 정보를 제거하는 방법 Apr 15, 2023 am 11:43 AM

Microsoft Word 문서는 저장 시 일부 메타데이터를 포함합니다. 이러한 세부 정보는 문서 작성 날짜, 작성자, 수정 날짜 등 문서 식별에 사용됩니다. 또한 문자 수, 단어 수, 단락 수 등과 같은 기타 정보도 있습니다. 다른 사람이 값을 알 수 없도록 작성자나 마지막 수정 정보 또는 기타 정보를 제거하려는 경우 방법이 있습니다. 이번 글에서는 문서 작성자와 최종 수정 정보를 제거하는 방법을 살펴보겠습니다. Microsoft Word 문서에서 작성자 및 마지막 수정 정보 제거 1단계 – 다음으로 이동

PyCharm을 사용하여 Selenium을 쉽게 설치하는 방법 알아보기: PyCharm 설치 및 구성 가이드 PyCharm을 사용하여 Selenium을 쉽게 설치하는 방법 알아보기: PyCharm 설치 및 구성 가이드 Jan 04, 2024 pm 09:48 PM

PyCharm 설치 튜토리얼: Selenium 설치 방법을 쉽게 배울 수 있으며, Python 개발자로서 프로젝트 개발을 완료하기 위해 다양한 타사 라이브러리와 도구를 사용해야 하는 경우가 많습니다. 그중 Selenium은 웹 애플리케이션의 자동화 테스트 및 UI 테스트에 매우 일반적으로 사용되는 라이브러리입니다. Python 개발을 위한 통합 개발 환경(IDE)인 PyCharm은 Python 코드를 개발하는 편리하고 빠른 방법을 제공합니다.

Laravel 개발: 브라우저 테스트에 Laravel Dusk와 Selenium을 사용하는 방법은 무엇입니까? Laravel 개발: 브라우저 테스트에 Laravel Dusk와 Selenium을 사용하는 방법은 무엇입니까? Jun 14, 2023 pm 01:53 PM

Laravel 개발: 브라우저 테스트에 LaravelDusk 및 Selenium을 사용하는 방법은 무엇입니까? 웹 애플리케이션이 더욱 복잡해짐에 따라 웹 애플리케이션의 모든 부분이 제대로 작동하는지 확인해야 합니다. 브라우저 테스트는 다양한 브라우저에서 애플리케이션의 정확성과 안정성을 보장하는 데 사용되는 일반적인 테스트 방법입니다. Laravel 개발에서는 브라우저 테스트를 위해 LaravelDusk 및 Selenium을 사용할 수 있습니다. 이 기사에서는 이 두 도구를 사용하여 테스트하는 방법을 소개합니다.

Windows 11에서 GPU를 가져오고 그래픽 카드 세부 정보를 확인하는 방법 Windows 11에서 GPU를 가져오고 그래픽 카드 세부 정보를 확인하는 방법 Nov 07, 2023 am 11:21 AM

시스템 정보 사용 시작을 클릭하고 시스템 정보를 입력합니다. 아래 이미지에 표시된 대로 프로그램을 클릭하기만 하면 됩니다. 여기에서는 대부분의 시스템 정보를 찾을 수 있으며, 그 중 하나는 그래픽 카드 정보입니다. 시스템 정보 프로그램에서 구성 요소를 확장한 다음 표시를 클릭합니다. 프로그램이 필요한 모든 정보를 수집하도록 하고, 준비가 되면 시스템에서 그래픽 카드별 이름과 기타 정보를 찾을 수 있습니다. 그래픽 카드가 여러 개 있더라도 여기에서 컴퓨터에 연결된 전용 및 통합 그래픽 카드와 관련된 대부분의 콘텐츠를 찾을 수 있습니다. 장치 관리자 사용 Windows 11 대부분의 다른 Windows 버전과 마찬가지로 장치 관리자에서 컴퓨터의 그래픽 카드를 찾을 수도 있습니다. 시작을 클릭한 다음

NameDrop과 연락처 정보를 공유하는 방법: iOS 17용 방법 가이드 NameDrop과 연락처 정보를 공유하는 방법: iOS 17용 방법 가이드 Sep 16, 2023 pm 06:09 PM

iOS 17에는 두 개의 iPhone을 터치하여 누군가와 연락처 정보를 교환할 수 있는 새로운 AirDrop 기능이 있습니다. NameDrop이라고 하며 작동 방식은 다음과 같습니다. 전화를 걸거나 문자를 보내기 위해 새로운 사람의 전화번호를 입력하는 대신, NameDrop을 사용하면 iPhone을 상대방의 iPhone 근처에 두기만 하면 연락처 정보를 교환하여 상대방이 귀하의 전화번호를 알 수 있습니다. 두 장치를 함께 놓으면 연락처 공유 인터페이스가 자동으로 나타납니다. 팝업을 클릭하면 개인의 연락처 정보와 연락처 포스터가 표시됩니다(iOS17의 새로운 기능인 자신의 사진을 사용자 정의하고 편집할 수도 있습니다). 이 화면에는 "수신만" 또는 응답으로 자신의 연락처 정보를 공유하는 옵션도 포함되어 있습니다.

단일 뷰 NeRF 알고리즘 S^3-NeRF는 다중 조명 정보를 사용하여 장면 형상 및 재료 정보를 복원합니다. 단일 뷰 NeRF 알고리즘 S^3-NeRF는 다중 조명 정보를 사용하여 장면 형상 및 재료 정보를 복원합니다. Apr 13, 2023 am 10:58 AM

현재 영상 3D 재구성 작업은 일반적으로 일정한 자연광 조건 하에서 여러 시점(멀티뷰)에서 대상 장면을 캡처하는 멀티뷰 스테레오 재구성 방식(Multi-view Stereo)을 사용합니다. 그러나 이러한 방법은 일반적으로 Lambertian 표면을 가정하므로 고주파수 세부 정보를 복구하는 데 어려움이 있습니다. 장면 재구성에 대한 또 다른 접근 방식은 고정된 시점에서 캡처한 이미지를 다양한 포인트 라이트로 활용하는 것입니다. 예를 들어 포토메트릭 스테레오 방법은 이 설정을 사용하고 해당 음영 정보를 사용하여 램버시안 개체가 아닌 개체의 표면 세부 정보를 재구성합니다. 하지만 기존의 싱글뷰 방식에서는 눈에 보이는 것을 표현하기 위해 보통 노멀맵이나 깊이맵을 사용하는 경우가 많습니다.

iPhone에서 NameDrop이 작동하는 방식(및 비활성화하는 방법) iPhone에서 NameDrop이 작동하는 방식(및 비활성화하는 방법) Nov 30, 2023 am 11:53 AM

iOS17에는 아이폰 두 대를 동시에 터치해 누군가와 연락처 정보를 교환할 수 있는 새로운 에어드롭(AirDrop) 기능이 있다. NameDrop이라고 하며 실제 작동 방식은 다음과 같습니다. NameDrop을 사용하면 전화를 걸거나 문자를 보낼 때 새로운 사람의 전화번호를 입력할 필요가 없어 상대방이 귀하의 전화번호를 알 수 있습니다. iPhone을 상대방의 iPhone에 가까이 갖다 대기만 하면 연락처 정보를 교환할 수 있습니다. 두 장치를 함께 놓으면 연락처 공유 인터페이스가 자동으로 나타납니다. 팝업을 클릭하면 사람의 연락처 정보와 연락처 포스터(사용자 정의하고 편집할 수 있는 자신의 사진, iOS 17의 새로운 기능)가 표시됩니다. 이 화면에는 "수신 전용"도 포함되어 있거나 이에 대한 응답으로 자신의 연락처 정보를 공유할 수 있습니다.

Scrapy 크롤러에서 Selenium 및 PhantomJS 사용 Scrapy 크롤러에서 Selenium 및 PhantomJS 사용 Jun 22, 2023 pm 06:03 PM

Scrapy 크롤러에서 Selenium 및 PhantomJSScrapy 사용 Scrapy는 Python 기반의 뛰어난 웹 크롤러 프레임워크이며 다양한 분야의 데이터 수집 및 처리에 널리 사용되었습니다. 크롤러 구현 시 특정 웹사이트에서 제공하는 콘텐츠를 얻기 위해 브라우저 작업을 시뮬레이션해야 하는 경우가 있습니다. 이 경우 Selenium 및 PhantomJS가 필요합니다. Selenium은 브라우저에서 인간 작업을 시뮬레이션하여 웹 애플리케이션 테스트를 자동화할 수 있습니다.

See all articles