요청을 사용하여 웹 페이지에서 부품 번호를 가져 오는 올바른 방법을 찾을 수 없습니다.

미투

요청을 사용하여 웹 페이지에서 다른 부품 번호를 구문 분석하는 스크립트를 만들려고합니다. 링크 를 확인하고 Product list탭을 클릭 하면 부품 번호가 표시됩니다.

이 사진

부품 번호가있는 곳을 나타냅니다.

나는 시도했다 :

import requests

link = 'https://www.festo.com/cat/en-id_id/products_ADNH'
post_url = 'https://www.festo.com/cfp/camosHTML5Client/cH5C/HRQ'

payload = {"q":4,"ReqID":21,"focus":"f24~v472_0","scroll":[],"events":["e468~12~0~472~0~4","e468_0~6~472"],"ito":22,"kms":4}

with requests.Session() as s:
    s.headers['user-agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
    s.headers['referer'] = 'https://www.festo.com/cfp/camosHTML5Client/cH5C/go?q=2'
    s.headers['content-type'] = 'application/json; charset=UTF-8'
    r = s.post(post_url,data=payload)
    print(r.json())

위의 스크립트를 실행하면 다음과 같은 결과가 나타납니다.

{'isRedirect': True, 'url': '../../camosStatic/Exception.html'}

요청을 사용하여 해당 사이트에서 부품 번호를 어떻게 가져올 수 있습니까?

셀레늄의 경우 아래처럼 부품 번호를 가져 오려고했는데 하드 코딩 된 딜레이를 제거하면 스크립트가 제품 목록 탭을 클릭 할 수없는 것 같습니다. 스크립트 내에서 하드 코딩 된 지연을 원하지 않는다는 점을 감안할 때.

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
 
link = 'https://www.festo.com/cat/en-id_id/products_ADNH'
 
with webdriver.Chrome() as driver:
    driver.get(link)
    wait = WebDriverWait(driver,15)
    wait.until(EC.frame_to_be_available_and_switch_to_it(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "object")))))
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#btn-group-cookie > input[value='Accept all cookies']"))).click()
    driver.switch_to.default_content()
    wait.until(EC.frame_to_be_available_and_switch_to_it(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "iframe#CamosIFId")))))
    
    time.sleep(10)   #I would like to get rid of this hardcoded delay
    
    item = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "[id='r17'] > [id='f24']")))
    driver.execute_script("arguments[0].click();",item)
    for elem in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "[data-ctcwgtname='tabTable'] [id^='v471_']")))[1:]:
        print(elem.text)
마르코

드라이버의 어려움은 '제품 목록'버튼을 클릭하여 해결책을 찾았습니다.

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.common.exceptions import TimeoutException, StaleElementReferenceException
from selenium import webdriver
import time

class NoPartsNumberException(Exception):
    pass

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)


driver.get("https://www.festo.com/cat/en-id_id/products_ADNH")
wait.until(ec.frame_to_be_available_and_switch_to_it(wait.until(ec.visibility_of_element_located((By.CSS_SELECTOR, "object")))))
wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, "#btn-group-cookie > input[value='Accept all cookies']"))).click()
driver.switch_to.default_content()
wait.until(ec.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@name='CamosIF']")))

endtime = time.time() + 30
while True:
    try:
        if time.time() > endtime:
            raise NoPartsNumberException('No parts number found')
        product_list = wait.until(ec.element_to_be_clickable((By.XPATH, "//div[@id='f24']")))
        product_list.click()
        part_numbers_elements = wait.until(ec.visibility_of_all_elements_located((By.XPATH, "//div[contains(@id, 'v471')]")))
        break
    except (TimeoutException, StaleElementReferenceException):
        pass

part_numbers = [p.text for p in part_numbers_elements[1:]]
print(part_numbers)

driver.close()

이런 식으로 드라이버는 부품 번호가 포함 된 창이 열릴 때까지 '제품 목록'버튼을 클릭하고 하드 코딩 된 시간 휴면 상태로 코드에서와 같이 10 초 미만으로 기다려야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

요청을 사용하여 웹 페이지에서 일부 필드를 가져올 수 없습니다.

분류에서Dev

요청을 사용하여 웹 페이지에서 모든 표 형식 콘텐츠를 가져올 수 없습니다.

분류에서Dev

요청을 사용하여 웹 페이지에서 일부 필드를 스크랩 할 수 없습니다.

분류에서Dev

"부모"를 참조하는 올바른 방법을 찾을 수 없습니다.

분류에서Dev

"부모"를 참조하는 올바른 방법을 찾을 수 없습니다.

분류에서Dev

셀레늄을 사용하는 웹 페이지에서 요소 (ID없이)를 찾을 수 없습니다.

분류에서Dev

Pandas를 사용하여 tsv 파일에서 올바른 출력을 가져올 수 없습니다.

분류에서Dev

"grep"을 사용하여 bash를 사용하여 웹 페이지의 특정 부분을 가져 오는 방법

분류에서Dev

Python을 사용하여 비디오 파일에서 올바른 Exif 데이터를 가져올 수 없습니다.

분류에서Dev

여러 매개 변수가있는 게시 요청을 사용하여 올바른 방식으로 애플리케이션을 보낼 수 없습니다.

분류에서Dev

googlesheet에서 가져올 올바른 xpath를 찾을 수 없습니다.

분류에서Dev

googlesheet에서 가져올 올바른 xpath를 찾을 수 없습니다.

분류에서Dev

nodejs를 사용하여 웹 사이트에서 URL을 가져올 수 없습니다.

분류에서Dev

Android에서 jsoup을 사용하여 웹 사이트를 가져올 수 없습니다.

분류에서Dev

OpenXml을 사용하여 Word 문서에서 페이지 수를 가져올 수 없습니다.

분류에서Dev

Angular에서 GET 요청을 수행 할 때이 오류가 발생합니다. '[object Object]를 지원하는 다른 개체를 찾을 수 없습니다.

분류에서Dev

python-요청을 사용하여 수백 개의 웹 페이지에서 콘텐츠 가져 오기

분류에서Dev

Ruby를 사용하여 셀레늄 웹 드라이버에서 HAR 파일을 가져올 수 없습니다.

분류에서Dev

요청을 사용하여 웹 페이지에서 표 형식 콘텐츠를 가져 오지 못했습니다.

분류에서Dev

웹 페이지에서 제목을 가져 오지 못하는 경우 스크립트를 몇 번 시도하도록 강제 할 수 없습니다.

분류에서Dev

R에서 strptime을 사용하여 올바른 날짜를 가져 오는 데 오류가 있습니다.

분류에서Dev

Slim Framework를 사용하여 PUT 요청에서 본문을 가져올 수 없습니다.

분류에서Dev

magento에서 제품 이미지를 가져 오는 동안 이미지 파일을 찾을 수 없습니다.

분류에서Dev

Selenium을 사용하여 웹 페이지에서 텍스트를 찾을 수 없습니다.

분류에서Dev

jquery를 사용한 후 요청에서 값을 가져올 수 없습니다.

분류에서Dev

동적 웹 페이지를 정적 웹 페이지로 변환 할 수 있도록 외부 CSS 파일을 가져 오는 빠른 방법이 있습니까?

분류에서Dev

동적 웹 페이지를 정적 웹 페이지로 변환 할 수 있도록 외부 CSS 파일을 가져 오는 빠른 방법이 있습니까?

분류에서Dev

요청을 사용하여 웹 페이지에서 이름을 긁어 낼 수 없습니다.

분류에서Dev

내 메뉴가 방해가 되었기 때문에 웹 사이트에서 올바른 높이로 링크를 얻을 수없는 것 같습니다.

Related 관련 기사

  1. 1

    요청을 사용하여 웹 페이지에서 일부 필드를 가져올 수 없습니다.

  2. 2

    요청을 사용하여 웹 페이지에서 모든 표 형식 콘텐츠를 가져올 수 없습니다.

  3. 3

    요청을 사용하여 웹 페이지에서 일부 필드를 스크랩 할 수 없습니다.

  4. 4

    "부모"를 참조하는 올바른 방법을 찾을 수 없습니다.

  5. 5

    "부모"를 참조하는 올바른 방법을 찾을 수 없습니다.

  6. 6

    셀레늄을 사용하는 웹 페이지에서 요소 (ID없이)를 찾을 수 없습니다.

  7. 7

    Pandas를 사용하여 tsv 파일에서 올바른 출력을 가져올 수 없습니다.

  8. 8

    "grep"을 사용하여 bash를 사용하여 웹 페이지의 특정 부분을 가져 오는 방법

  9. 9

    Python을 사용하여 비디오 파일에서 올바른 Exif 데이터를 가져올 수 없습니다.

  10. 10

    여러 매개 변수가있는 게시 요청을 사용하여 올바른 방식으로 애플리케이션을 보낼 수 없습니다.

  11. 11

    googlesheet에서 가져올 올바른 xpath를 찾을 수 없습니다.

  12. 12

    googlesheet에서 가져올 올바른 xpath를 찾을 수 없습니다.

  13. 13

    nodejs를 사용하여 웹 사이트에서 URL을 가져올 수 없습니다.

  14. 14

    Android에서 jsoup을 사용하여 웹 사이트를 가져올 수 없습니다.

  15. 15

    OpenXml을 사용하여 Word 문서에서 페이지 수를 가져올 수 없습니다.

  16. 16

    Angular에서 GET 요청을 수행 할 때이 오류가 발생합니다. '[object Object]를 지원하는 다른 개체를 찾을 수 없습니다.

  17. 17

    python-요청을 사용하여 수백 개의 웹 페이지에서 콘텐츠 가져 오기

  18. 18

    Ruby를 사용하여 셀레늄 웹 드라이버에서 HAR 파일을 가져올 수 없습니다.

  19. 19

    요청을 사용하여 웹 페이지에서 표 형식 콘텐츠를 가져 오지 못했습니다.

  20. 20

    웹 페이지에서 제목을 가져 오지 못하는 경우 스크립트를 몇 번 시도하도록 강제 할 수 없습니다.

  21. 21

    R에서 strptime을 사용하여 올바른 날짜를 가져 오는 데 오류가 있습니다.

  22. 22

    Slim Framework를 사용하여 PUT 요청에서 본문을 가져올 수 없습니다.

  23. 23

    magento에서 제품 이미지를 가져 오는 동안 이미지 파일을 찾을 수 없습니다.

  24. 24

    Selenium을 사용하여 웹 페이지에서 텍스트를 찾을 수 없습니다.

  25. 25

    jquery를 사용한 후 요청에서 값을 가져올 수 없습니다.

  26. 26

    동적 웹 페이지를 정적 웹 페이지로 변환 할 수 있도록 외부 CSS 파일을 가져 오는 빠른 방법이 있습니까?

  27. 27

    동적 웹 페이지를 정적 웹 페이지로 변환 할 수 있도록 외부 CSS 파일을 가져 오는 빠른 방법이 있습니까?

  28. 28

    요청을 사용하여 웹 페이지에서 이름을 긁어 낼 수 없습니다.

  29. 29

    내 메뉴가 방해가 되었기 때문에 웹 사이트에서 올바른 높이로 링크를 얻을 수없는 것 같습니다.

뜨겁다태그

보관