댓글 검색 목록

[Nodejs] 자바 스크립트 웹 스크래핑 가이

페이지 정보

작성자 운영자 작성일 20-03-01 21:39 조회 930 댓글 0

Puppeteer 팀 전체가 Playwright를 만들기 위해 Microsoft로 옮겼습니다.

 Playwright는 내가 알 수 있는 한 Puppeteer와 거의 동일한 API를 사용합니다. 

필자와 같은 타입 스크립트 사용자의 한 가지 큰 단점은 꼭두각시 인형처럼 타입 정의 파일이 아직 없다는 것입니다. 

정의 파일을 만드는 방법을 배울 때가 되었을 것입니다.


https://javascriptwebscrapingguy.com/jordan-plays-with-playwright/ 


Demo code here


여기서 Playwright 설명서를 확인하십시오.


puppeteer로 웹 스크래핑을 배우려면 여기를 확인하십시오.


Playwright와 puppeteer는 주로 자동화 된 웹 테스트를 위해 만들어졌으며 이것으로 큰 일을 합니다. 

웹 스크래핑 및 지루한 작업 자동화에 주로 사용하지만 이러한 도구에는 테스트에 도움이 되는 많은 부분이 있습니다.


그것이 보여주는 첫 번째 예 중 하나는 다른 장치로 테스트하는 것이 얼마나 쉬운 지입니다. 코드 작동 방식을 살펴보십시오.


const pixel2 = devices['Pixel 2'];
		const browser = await chromium.launch({ headless: false });
		const context = await browser.newContext({
			viewport: pixel2.viewport,
			userAgent: pixel2.userAgent,
			geolocation: { longitude: longitude, latitude: latitude },
			permissions: { 'https://www.google.com': ['geolocation'] }
		});
		const page = await context.newPage();
		await page.goto('https://maps.google.com');
		await page.click('text="Your location"');
		await page.waitForRequest(/.*pwa\/net.js.*/);
		await page.screenshot({ path: `${longitude}, ${latitude}-android.png` });
		await browser.close();

pixel2는 Playwright (const playwright = require ( 'playwright');)에서 가져 오며 여기에서 해당 장치와 함께 제공되는 모든 통계 만 표시 할 수 있습니다. 꽤 놀랍고 간단합니다.


꼭두각시 인형과 함께 사용하지 않았기 때문에 지리적 위치에 약간의 혼란을 주었습니다. 

나는 임의의 경도 및 위도 기능을 구축 한 다음이 임의의 위치 각각에서 Google지도를 타격하려고 시도하고 그 종류의 것이 Google을 차단하는 데 영향을 미치는 방법을 보았습니다. 

20 번의 시도 후에 구글은 아무 것도 표시하지 않았다. 이 예제에서는 5 개의 루프만 있습니다.


async function tryDevices() {
	// Loop five times with random locations
	for (let i = 0; i < 5; i++) {
		const latitude = getRandomInRange(-90, 90, 3);
		const longitude = getRandomInRange(-90, 90, 3);

		const pixel2 = devices['Pixel 2'];
		const browser = await chromium.launch({ headless: false });
		const context = await browser.newContext({
			viewport: pixel2.viewport,
			userAgent: pixel2.userAgent,
			geolocation: { longitude: longitude, latitude: latitude },
			permissions: { 'https://www.google.com': ['geolocation'] }
		});
		const page = await context.newPage();
		await page.goto('https://maps.google.com');
		await page.click('text="Your location"');
		await page.waitForRequest(/.*pwa\/net.js.*/);
		await page.screenshot({ path: `${longitude}, ${latitude}-android.png` });
		await browser.close();
	}
}

// Longitude and latitude function
function getRandomInRange(from, to, fixed) {
	return (Math.random() * (to - from) + from).toFixed(fixed) * 1;
}




댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.