puppeteer href 배열을 가져온 다음 해당 페이지의 각 href와 href를 반복합니다.

Tekky

node.js에서 puppeteer를 통해 데이터를 스크랩하려고합니다.

현재 well.ca의 특정 섹션에있는 모든 데이터를 스크랩하는 스크립트를 작성하려고합니다.

지금은 node.js를 통해 구현하려는 방법론 / 로직이 있습니다.

1-사이트의 의학 건강 섹션으로 이동

2-dom 선택기를 사용하여 dom 선택기를 .panel-body-content통해 href 배열을 가져와 panel-body-content a[href] 하위 섹션을 긁어냅니다.

3-for 루프를 사용하여 각 링크 (하위 섹션)를 반복합니다.

4 각 하위 섹션 링크에 대해 다음을 col-lg-5ths col-md-3 col-sm-4 col-xs-6 통해 값이있는 각 클래스의 href를 가져 와서 각 제품에 대한 또 다른 href 배열을 가져옵니다..col-lg-5ths col-md-3 col-sm-4 col-xs-6 a[href]

5-하위 섹션 내의 각 제품을 반복합니다.

6-각 제품에 대한 스크랩 데이터

현재 저는 위 코드의 대부분을 작성했습니다.

const puppeteer = require('puppeteer');
const chromeOptions = {
  headless: false,
  defaultViewport: null,
};
(async function main() {
  const browser = await puppeteer.launch(chromeOptions);
  try {
    const page = await browser.newPage();
    await page.goto("https://well.ca/categories/medicine-health_2.html");
    console.log("::::::: OPEN WELL   ::::::::::");

    // href attribute
    const hrefs1 = await page.evaluate(
      () => Array.from(
        document.querySelectorAll('.panel-body-content a[href]'),
       a => a.getAttribute('href')
     )
   );
    
    console.log(hrefs1);

    const urls = hrefs1

    for (let i = 0; i < urls.length; i++) {
      const url = urls[i];
      await page.goto(url);
    }
      const hrefs2 = await page.evaluate(
     () => Array.from(
      document.querySelectorAll('.col-lg-5ths col-md-3 col-sm-4 col-xs-6 a[href]'),
       a => a.getAttribute('href')
     )
    );

모든 제품의 각 href에 대한 배열을 얻으려고 할 때 배열에 아무것도 수신하지 않습니다.

중첩 된 for 루프를 추가하여 모든 하위 섹션의 모든 제품에 대한 모든 href의 배열을 가져온 다음 각 제품 링크를 방문하려면 어떻게해야합니까?

.col-lg-5ths col-md-3 col-sm-4 col-xs-6ID 가있는 클래스 내에있는 모든 href를 가져 오는 올바른 DOM 선택기는 무엇입니까?product_grid_link

각 하위 섹션에서 제품의 href를 통해 각 제품에서 정보를 가져 오는 후속 루프를 추가하려면 어떻게 코드에 포함시킬 수 있습니까?

어떤 도움이라도 대단히 감사하겠습니다.

vsemozhebuty

일부 링크가 중복 된 것으로 보이므로 최종 페이지의 모든 링크를 수집하고 링크 목록의 중복을 제거한 다음 최종 페이지를 긁어내는 것이 좋습니다. (나중에 사용할 수 있도록 최종 페이지의 링크를 파일에 저장할 수도 있습니다.)이 스크립트는 5395 개의 링크 (중복 제거)를 수집합니다.

'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch({ headless: false, defaultViewport: null });
    const [page] = await browser.pages();

    await page.goto('https://well.ca/categories/medicine-health_2.html');

    const hrefsCategoriesDeduped = new Set(await page.evaluate(
      () => Array.from(
        document.querySelectorAll('.panel-body-content a[href]'),
        a => a.href
      )
    ));

    const hrefsPages = [];

    for (const url of hrefsCategoriesDeduped) {
      await page.goto(url);
      hrefsPages.push(...await page.evaluate(
        () => Array.from(
          document.querySelectorAll('.col-lg-5ths.col-md-3.col-sm-4.col-xs-6 a[href]'),
          a => a.href
        )
      ));
    }

    const hrefsPagesDeduped = new Set(hrefsPages);

    // hrefsPagesDeduped can be converted back to an array
    // and saved in a JSON file now if needed.

    for (const url of hrefsPagesDeduped) {
      await page.goto(url);

      // Scrape the page.
    }

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

href 값을 가져온 다음 ID로 찾습니다.

분류에서Dev

각 td에 대해 반복하고 해당 텍스트를 가져온 다음 각 td의 내용을 입력 상자로 바꿉니다.

분류에서Dev

<a>를 통해 Jquery는 각각 href 만 제공합니다.

분류에서Dev

location.href 또는 이와 유사한 것을 사용하여 URL 다음에 해시 기호를 엽니 다.

분류에서Dev

location.href 또는 이와 유사한 것을 사용하여 URL 다음에 해시 기호를 엽니 다.

분류에서Dev

테이블의 각 행에서 한 열의 내용을 가져온 다음 각 내용을 반복합니다.

분류에서Dev

배열의 문자열에서 날짜를 가져온 다음 해당 문자열을 날짜별로 정렬

분류에서Dev

jQuery는 요소의 ID와 href를 증가시킵니다.

분류에서Dev

tbody puppeteer 페이지에서 td dataname href 가져 오기

분류에서Dev

ID의 배열을 가져온 다음 해당 ID로 다른 게시물 유형을 쿼리합니다.

분류에서Dev

2 개의 다른 href 및 CSS 위치 지정으로 각도 이온 항목 반복

분류에서Dev

객체의 배열을 반복하고 자바 스크립트 만 사용하여 기본 앵커 href 링크를 방지합니다.

분류에서Dev

하위 쿼리에서 열 이름을 가져온 다음 해당 열의 값을 반환합니까?

분류에서Dev

작은 정사각형 배경 이미지를 그리거나 애니메이션을 적용한 다음 x와 y에 반복해야합니다.

분류에서Dev

외부 라이브러리없이 이미지의 한 섹션을 가져온 다음 해당 사각형의 중심을 가져 오나요?

분류에서Dev

내 JQuery 배열 루프가 내 href를 올바르게 설정하지 않는 이유가 궁금합니다.

분류에서Dev

페이지가 게시물을 통해 제출되지 않습니다. JS를 사용하여 <a href>를 통해 제출

분류에서Dev

href 태그에 단어가 포함 된 문자열을 기반으로 테이블의 모든 이미지를 제거합니다.

분류에서Dev

한 배열을 검색 한 다음 다른 배열에서 해당 데이터를 가져옵니다.

분류에서Dev

각도기 .getAttribute ( 'href')가 작동하지 않습니다.

분류에서Dev

고유 ID가있는 DIV 내부의 <a>에서 href를 복사하고 해당 DIV의 다른 곳에 붙여 넣습니다.

분류에서Dev

Django href는 검색 창에서 URL을 반복합니다.

분류에서Dev

window.location.href가 html 페이지를 리디렉션하지 않습니다.

분류에서Dev

RouterLink는 상위 페이지 템플릿에서 처음로드 할 때 href를 추가하지 않습니다.

분류에서Dev

jQuery UI가 SVG 이미지 (xlink : href)의 링크를 비활성화합니다.

분류에서Dev

jQuery는 div의 여러 단어에 href를 추가합니다.

분류에서Dev

Thymeleaf로 Spring Boot Project를 실행하면 브라우저가 CSS 파일을로드하지 않지만 href 및 th : href의 경로는 정확합니다.

분류에서Dev

Rails 쿼리를 통해 포럼 주제의 모든 게시물을 가져온 다음 각 게시물의 사용자를 가져옵니다.

분류에서Dev

PHP는 배열의 배열을 정렬하고 각 키를 가져와야합니다.

Related 관련 기사

  1. 1

    href 값을 가져온 다음 ID로 찾습니다.

  2. 2

    각 td에 대해 반복하고 해당 텍스트를 가져온 다음 각 td의 내용을 입력 상자로 바꿉니다.

  3. 3

    <a>를 통해 Jquery는 각각 href 만 제공합니다.

  4. 4

    location.href 또는 이와 유사한 것을 사용하여 URL 다음에 해시 기호를 엽니 다.

  5. 5

    location.href 또는 이와 유사한 것을 사용하여 URL 다음에 해시 기호를 엽니 다.

  6. 6

    테이블의 각 행에서 한 열의 내용을 가져온 다음 각 내용을 반복합니다.

  7. 7

    배열의 문자열에서 날짜를 가져온 다음 해당 문자열을 날짜별로 정렬

  8. 8

    jQuery는 요소의 ID와 href를 증가시킵니다.

  9. 9

    tbody puppeteer 페이지에서 td dataname href 가져 오기

  10. 10

    ID의 배열을 가져온 다음 해당 ID로 다른 게시물 유형을 쿼리합니다.

  11. 11

    2 개의 다른 href 및 CSS 위치 지정으로 각도 이온 항목 반복

  12. 12

    객체의 배열을 반복하고 자바 스크립트 만 사용하여 기본 앵커 href 링크를 방지합니다.

  13. 13

    하위 쿼리에서 열 이름을 가져온 다음 해당 열의 값을 반환합니까?

  14. 14

    작은 정사각형 배경 이미지를 그리거나 애니메이션을 적용한 다음 x와 y에 반복해야합니다.

  15. 15

    외부 라이브러리없이 이미지의 한 섹션을 가져온 다음 해당 사각형의 중심을 가져 오나요?

  16. 16

    내 JQuery 배열 루프가 내 href를 올바르게 설정하지 않는 이유가 궁금합니다.

  17. 17

    페이지가 게시물을 통해 제출되지 않습니다. JS를 사용하여 <a href>를 통해 제출

  18. 18

    href 태그에 단어가 포함 된 문자열을 기반으로 테이블의 모든 이미지를 제거합니다.

  19. 19

    한 배열을 검색 한 다음 다른 배열에서 해당 데이터를 가져옵니다.

  20. 20

    각도기 .getAttribute ( 'href')가 작동하지 않습니다.

  21. 21

    고유 ID가있는 DIV 내부의 <a>에서 href를 복사하고 해당 DIV의 다른 곳에 붙여 넣습니다.

  22. 22

    Django href는 검색 창에서 URL을 반복합니다.

  23. 23

    window.location.href가 html 페이지를 리디렉션하지 않습니다.

  24. 24

    RouterLink는 상위 페이지 템플릿에서 처음로드 할 때 href를 추가하지 않습니다.

  25. 25

    jQuery UI가 SVG 이미지 (xlink : href)의 링크를 비활성화합니다.

  26. 26

    jQuery는 div의 여러 단어에 href를 추가합니다.

  27. 27

    Thymeleaf로 Spring Boot Project를 실행하면 브라우저가 CSS 파일을로드하지 않지만 href 및 th : href의 경로는 정확합니다.

  28. 28

    Rails 쿼리를 통해 포럼 주제의 모든 게시물을 가져온 다음 각 게시물의 사용자를 가져옵니다.

  29. 29

    PHP는 배열의 배열을 정렬하고 각 키를 가져와야합니다.

뜨겁다태그

보관