<?xml version="1.0" encoding="UTF-8" ?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
	<channel>
		<title>웹 자동화</title>
		<link>https://autolabs.co.kr/board_Goon42</link>
		<description></description>
		<atom:link href="https://autolabs.co.kr/board_Goon42/rss" rel="self" type="application/rss+xml" />
		<language>ko</language>
		<pubDate>Wed, 13 May 2026 22:03:44 +0900</pubDate>
		<generator>Rhymix</generator>
			<item>
			<title>[ABunjang #3] 썸네일 이미지 확대 보간 처리 기법 적용</title>
			<link>https://autolabs.co.kr/board_Goon42/1083510</link>
				<description>&lt;img class=&quot;xe-MultimediaThumb&quot; src=&quot;http://i1.ytimg.com/vi/EdPJoabQkFE/hqdefault.jpg&quot; alt=&quot;youtube:EdPJoabQkFE&quot; /&gt; &lt;p&gt;안녕하세요. 오토소장입니다.&lt;/p&gt; &lt;p&gt;이 영상에서는 ABunjang 썸네일 이미지를 확대할 때 적용되는 보간(interpolation) 기법을 비교합니다.&lt;/p&gt; &lt;p&gt;왼쪽 화면은 원본 픽셀을 그대로 늘린 최근접 보간(Nearest Neighbor) 방식으로, 원본에 가장 충실하지만 확대 시 계단 현상이 두드러집니다.&lt;/p&gt; &lt;p&gt;오른쪽 화면은 SkiaSharp의 고품질 보간을 적용해 부드럽고 자연스럽게 표현되지만 원본과는 다른 보정이 들어갑니다.&lt;/p&gt; &lt;p&gt;두 방식을 나란히 비교하면서 확대 과정에서 발생하는 차이를 직관적으로 확인할 수 있으며, 상황에 따라 어떤 보간 방식을 선택해야 하는지 이해할 수 있습니다.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/EdPJoabQkFE?si=_Yskp8tl_A38wQ2r&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>자료</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/1083510</guid>
	<comments>https://autolabs.co.kr/board_Goon42/1083510#comment</comments>			<pubDate>Tue, 02 Sep 2025 06:30:30 +0900</pubDate>
		</item><item>
			<title>[ABunjang #2] 썸네일 및 이미지 분석기능 추가</title>
			<link>https://autolabs.co.kr/board_Goon42/1083509</link>
				<description>&lt;img class=&quot;xe-MultimediaThumb&quot; src=&quot;http://i1.ytimg.com/vi/XcjjTkS4QWs/hqdefault.jpg&quot; alt=&quot;youtube:XcjjTkS4QWs&quot; /&gt; &lt;p&gt;안녕하세요. 오토소장입니다.&lt;/p&gt; &lt;p&gt;이번 영상에서는 ABunjang에 새롭게 추가된 썸네일 및 이미지 분석 기능을 소개합니다.&lt;/p&gt; &lt;p&gt;ABunjang에서 검색된 물품을 클릭하여 상세정보 조회시 해당 물품에 등록된 이미지를 썸네일 형태로 보여주며,&lt;/p&gt; &lt;p&gt;해당 썸네일 이미지 클릭시 이미지를 확대/축소/이동하여 분석할 수 있는 기능을 추가하였습니다.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/XcjjTkS4QWs?si=nQCz7gKcyFXV_m0z&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>자료</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/1083509</guid>
	<comments>https://autolabs.co.kr/board_Goon42/1083509#comment</comments>			<pubDate>Tue, 02 Sep 2025 06:29:19 +0900</pubDate>
		</item><item>
			<title>[ABunjang #1] 번개장터 자동 검색기를 만들게 된 계기</title>
			<link>https://autolabs.co.kr/board_Goon42/1083499</link>
				<description>&lt;img class=&quot;xe-MultimediaThumb&quot; src=&quot;http://i1.ytimg.com/vi/aewAJuxYJIc/hqdefault.jpg&quot; alt=&quot;youtube:aewAJuxYJIc&quot; /&gt; &lt;p&gt;안녕하세요. 오토소장입니다.&lt;/p&gt; &lt;p&gt;최근에 고전게임 물건을 구하려고 번개장터 앱을 자주 이용하고 있습니다. 번개장터 앱의 경우 키워드 검색 결과에 대한 정확성 범위가 너무 넓어서 닷넷(C#) 윈폼 기반의 고급 검색기(ABunjang)를 실험적으로 만들어 보고 있습니다.&lt;/p&gt; &lt;p data-end=&quot;306&quot; data-start=&quot;86&quot;&gt;이번 프로젝트에는 오토핫키가 아닌 C# 윈폼을 사용하게 된 이유는 오토핫키는 단순 매크로나 키보드&amp;middot;마우스 자동화에 강점이 있지만, 대규모 데이터를 처리하거나 안정적으로 UI를 구성하는 데에는 한계가 있습니다. 반면 C# 윈폼은 네트워크 요청, JSON 파싱, 리스트뷰 같은 UI 컨트롤을 손쉽게 활용할 수 있어 번개장터 API와 같은 외부 데이터 소스를 연동하기에 적합합니다.&lt;/p&gt; &lt;p data-end=&quot;488&quot; data-start=&quot;308&quot;&gt;특히, 검색 결과를 리스트로 정리하거나 이미지 썸네일을 불러오는 과정은 오토핫키만으로 구현하기에는 번거로운 작업이었기 때문에, 실험 단계부터 C# 윈폼 기반으로 설계하는 편이 효율적이라고 판단했습니다. 앞으로도 핵심 로직은 C#에서 구현하고, 필요하다면 일부 자동화 기능을 오토핫키로 보완하는 형태를 고려하고 있습니다.&lt;/p&gt; &lt;p&gt;아래 영상은&amp;nbsp;ABunjang v1.0의 번개장터 검색 연동에 대한 시연 영상입니다. 많은 관심 부탁드립니다^^!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/aewAJuxYJIc?si=npIls0AELo1z769X&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>자료</category>	<category>ABunjang</category>			<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/1083499</guid>
	<comments>https://autolabs.co.kr/board_Goon42/1083499#comment</comments>			<pubDate>Tue, 02 Sep 2025 06:14:23 +0900</pubDate>
		</item><item>
			<title>오토핫키를 활용한 OpenAI gpt API 연동하여 질문하고 답 받기</title>
			<link>https://autolabs.co.kr/board_Goon42/1056136</link>
				<description>&lt;h3&gt;&lt;b&gt;시작&lt;/b&gt;&lt;/h3&gt; &lt;p&gt;api 를 활용하여 인터넷에서 데이터를 가져오는 것은 어렵지 않다.&lt;br /&gt; 문제는 api 가 없을 경우고 api 를 제공한다면 손쉽게 데이터를 가져올 수 있다.&lt;br /&gt; &lt;br /&gt; API 를 제공하는 사이트 중에 현재 가장 핫한 OpenAI 를 시도해볼 것이다.&lt;br /&gt; &lt;br /&gt; &lt;a href=&quot;https://beta.openai.com/playground&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;https://beta.openai.com/playground&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;figure&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TrUGX/btrTGagZ07j/5lMjm5driTVMcug1fibd2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTrUGX%2FbtrTGagZ07j%2F5lMjm5driTVMcug1fibd2K%2Fimg.png&quot; alt=&quot;&quot; /&gt;&lt;/figure&gt; &lt;p&gt;OpenAI API 활용하는 방법을 OpenAI 에게 직접 물어봤다.&lt;/p&gt; &lt;div code_type=&quot;Cpp&quot; collapse=&quot;false&quot; first_line=&quot;1&quot; nogutter=&quot;false&quot; editor_component=&quot;code_highlighter&quot; style=&quot;font-family:&#039;DejaVu Sans Mono&#039;, &#039;Courier New&#039;, Courier, monospace;border:#666 1px dotted;border-left:#2AE 5px solid;padding:5px;background:#FAFAFA url(&amp;quot;./modules/editor/components/code_highlighter/component_icon.gif&amp;quot;) no-repeat right top;&quot; title=&quot;&quot;&gt;#NoEnv&lt;br /&gt; #SingleInstance force&lt;br /&gt; &lt;br /&gt; #Include WinHttp.ahk&lt;br /&gt; &lt;br /&gt; WinHTTP := ComObjCreate(&quot;WinHttp.WinHttpRequest.5.1&quot;) &lt;br /&gt; &lt;br /&gt; OpenAI := WinHTTP.Open(&quot;POST&quot;, &quot;https://api.openai.com/v1/engines/davinci/completions&quot;)&lt;br /&gt; OpenAI.SetRequestHeader(&quot;Content-Type&quot;, &quot;application/json&quot;)&lt;br /&gt; OpenAI.SetRequestHeader(&quot;Authorization&quot;, &quot;Bearer &amp;lt;your_token&amp;gt;&quot;)&lt;br /&gt; OpenAI.Send(&quot;{\&quot;prompt\&quot;: \&quot;This is a test\&quot;, \&quot;max_tokens\&quot;: 10}&quot;)&lt;br /&gt; &lt;br /&gt; MsgBox % OpenAI.ResponseText&lt;/div&gt; &lt;pre&gt; &lt;/pre&gt; &lt;p&gt;생각보다 훌륭한 결과를 보여줬다.&lt;br /&gt; &lt;br /&gt; 물론 여기서 발생되는 문제는 수정을 해줘야 할 것이다.&lt;/p&gt; &lt;h4&gt;&lt;b&gt;1.&lt;/b&gt;&lt;/h4&gt; &lt;p&gt;먼저 #Include 할 Winhttp.ahk 가 우리는 없다.&lt;br /&gt; ▶ 지워준다&lt;/p&gt; &lt;h4&gt;&lt;b&gt;2.&lt;/b&gt;&lt;/h4&gt; &lt;p&gt;OpenAI := WinHTTP.Open 를 하는 것은 문제가 없는데 OpenAI 로 헤더 지정과 데이터를 전송하는 것은 안될 것이다.&lt;br /&gt; ▶ OpenAI 첫번째는 지우고 나머지는 WinHTTP 로 바꿔준다.&lt;/p&gt; &lt;h4&gt;&lt;b&gt;3.&lt;/b&gt;&lt;/h4&gt; &lt;p&gt;&amp;lt;your_token&amp;gt; 값이 없다.&lt;br /&gt; ▶ 값을 나의 api key 값으로 바꿔준다.&lt;/p&gt; &lt;figure&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ygOb3/btrTFlwtWBD/0W3yTieweQmlLtyLA8qrxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FygOb3%2FbtrTFlwtWBD%2F0W3yTieweQmlLtyLA8qrxK%2Fimg.png&quot; alt=&quot;&quot; /&gt;&lt;/figure&gt; &lt;p&gt;자 이제 테스트를 해보자.&lt;/p&gt; &lt;figure&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC2IOB/btrTDYWqZxN/QoapoMgKkkdc9CsSiuVcM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC2IOB%2FbtrTDYWqZxN%2FQoapoMgKkkdc9CsSiuVcM0%2Fimg.png&quot; alt=&quot;&quot; /&gt;&lt;/figure&gt; &lt;p&gt;This is a test 라는 문구를 보냈더니 ai 가 Said Blake. A Good Morning 이라고 보내줬다.&lt;/p&gt; &lt;div code_type=&quot;Cpp&quot; collapse=&quot;false&quot; first_line=&quot;1&quot; nogutter=&quot;false&quot; editor_component=&quot;code_highlighter&quot; style=&quot;font-family:&#039;DejaVu Sans Mono&#039;, &#039;Courier New&#039;, Courier, monospace;border:#666 1px dotted;border-left:#2AE 5px solid;padding:5px;background:#FAFAFA url(&amp;quot;./modules/editor/components/code_highlighter/component_icon.gif&amp;quot;) no-repeat right top;&quot; title=&quot;&quot;&gt;#NoEnv&lt;br /&gt; #SingleInstance force&lt;br /&gt; &lt;br /&gt; WinHTTP := ComObjCreate(&quot;WinHttp.WinHttpRequest.5.1&quot;) &lt;br /&gt; &lt;br /&gt; WinHTTP.Open(&quot;POST&quot;, &quot;https://api.openai.com/v1/engines/davinci/completions&quot;)&lt;br /&gt; WinHTTP.SetRequestHeader(&quot;Content-Type&quot;, &quot;application/json&quot;)&lt;br /&gt; WinHTTP.SetRequestHeader(&quot;Authorization&quot;, &quot;Bearer ~나의 api key 값~&quot;)&lt;br /&gt; WinHTTP.Send(&quot;{&quot;&quot;prompt&quot;&quot;: &quot;&quot;This is a test&quot;&quot;, &quot;&quot;max_tokens&quot;&quot;: 10}&quot;)&lt;br /&gt; &lt;br /&gt; MsgBox % WinHTTP.ResponseText&lt;/div&gt; &lt;pre&gt; &lt;/pre&gt; &lt;p&gt;물론 Send 값이 정보가 너무 적기 때문에&lt;br /&gt; 보내는 정보값은 제공하는 api 설명에서 찾아봐야 한다.&lt;br /&gt; &lt;br /&gt; &lt;a href=&quot;https://beta.openai.com/docs/api-reference/completions/create&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;https://beta.openai.com/docs/api-reference/completions/create&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;이 곳을 보면 어떤 정보를 Json 형식으로 보내는지 확인할 수 있다.&lt;/p&gt; &lt;figure&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4ngQc/btrTHPi87nZ/kM7IEaQkM2shkEAkbU1gw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4ngQc%2FbtrTHPi87nZ%2FkM7IEaQkM2shkEAkbU1gw1%2Fimg.png&quot; alt=&quot;&quot; /&gt;&lt;/figure&gt; &lt;p&gt;우리는 OpenAI 가 보내준 예시에서 보면 알 수 있듯이 괄호 { } 까지 문자열로 보내는 것을 확인했으므로&lt;br /&gt; 이 값을 온전히 보내줘야 하기 때문에&lt;/p&gt; &lt;div code_type=&quot;Cpp&quot; collapse=&quot;false&quot; first_line=&quot;1&quot; nogutter=&quot;false&quot; editor_component=&quot;code_highlighter&quot; style=&quot;font-family:&#039;DejaVu Sans Mono&#039;, &#039;Courier New&#039;, Courier, monospace;border:#666 1px dotted;border-left:#2AE 5px solid;padding:5px;background:#FAFAFA url(&amp;quot;./modules/editor/components/code_highlighter/component_icon.gif&amp;quot;) no-repeat right top;&quot; title=&quot;&quot;&gt;json = &lt;br /&gt; (&lt;br /&gt; { &lt;br /&gt; &quot;model&quot;: &quot;text-davinci-003&quot;,&lt;br /&gt; &quot;prompt&quot;: &quot;Say This is a test.&quot;,&lt;br /&gt; &quot;temperature&quot;: 0.5,&lt;br /&gt; &quot;max_tokens&quot;: 3000,&lt;br /&gt; &quot;top_p&quot;: 1,&lt;br /&gt; &quot;frequency_penalty&quot;: 0.5,&lt;br /&gt; &quot;presence_penalty&quot;: 0,&lt;br /&gt; &quot;stop&quot;: [&quot;You:&quot;]&lt;br /&gt; &lt;br /&gt; } &lt;br /&gt; )&lt;/div&gt; &lt;pre&gt; &lt;/pre&gt; &lt;p&gt;이렇게 해줘야 한다.&lt;br /&gt; &lt;br /&gt; 질문 내용도 바꾸고 설정값도 적당히 바꿔서&lt;/p&gt; &lt;figure&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpAX21/btrTFlJ6eOQ/XoeolfMgWb7COv86smQfck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpAX21%2FbtrTFlJ6eOQ%2FXoeolfMgWb7COv86smQfck%2Fimg.png&quot; alt=&quot;&quot; /&gt;&lt;/figure&gt; &lt;p&gt;이렇게 활용할 수 있을 것이다.&lt;/p&gt; &lt;h3&gt;&lt;b&gt;뭐 어쩌라고?&lt;/b&gt;&lt;/h3&gt; &lt;p&gt;&lt;br /&gt; API 는 해당 사이트에서 제공하는 문서를 확인하면 쉽게 접근할 수 있다.&lt;br /&gt; 다만 API 활용에서 가장 많이 사용하는 언어인 파이썬과 자바스크립트 그 외에 C, C++, C# 등은 대부분 예시를 보여주지만&lt;br /&gt; 오토핫키는 그렇지 않을 가능성이 정말 크기 때문에 문서를 읽고 오토핫키로 변환할 수 있는 어느정도의 짬은 있어야 한다.&lt;br /&gt; &lt;br /&gt; 아니면 OpenAI 에게 직접 물어봐도 될 것 같다.&lt;/p&gt; &lt;figure&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dexJea/btrTBKqMgs0/2y9VD7nd7FtUVcS6VaUAB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdexJea%2FbtrTBKqMgs0%2F2y9VD7nd7FtUVcS6VaUAB1%2Fimg.png&quot; alt=&quot;&quot; /&gt;&lt;/figure&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>압살맨티스토리</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/1056136</guid>
	<comments>https://autolabs.co.kr/board_Goon42/1056136#comment</comments>			<pubDate>Thu, 15 Dec 2022 06:39:59 +0900</pubDate>
		</item><item>
			<title>웹 통합 크롤링.ahk / winhttp, xmlhttp, urldownloadtofile, readurl() 지원</title>
			<link>https://autolabs.co.kr/board_Goon42/1054160</link>
				<description>&lt;p&gt;안녕하세요. &lt;span style=&quot;font-size:24px;&quot;&gt;압살맨&lt;/span&gt;입니다. 다들 얍살맨 암살맨 이러시길래 글씨 폰트를 키워봤습니다. 이제 잘 보이시나요?&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;웹 크롤링을 통해 데이터를 자르고 원하는 결과만 받아오는 작업을 할 때 좀 더 간편하게 할 수 있도록 도와주는 스크립트입니다.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;사실상 완성형이기 때문에 가져다가 그대로 쓰시면 됩니다.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div code_type=&quot;Plain&quot; collapse=&quot;false&quot; first_line=&quot;1&quot; nogutter=&quot;false&quot; editor_component=&quot;code_highlighter&quot; style=&quot;font-family:&#039;DejaVu Sans Mono&#039;, &#039;Courier New&#039;, Courier, monospace;border:#666 1px dotted;border-left:#2AE 5px solid;padding:5px;background:#FAFAFA url(&amp;quot;./modules/editor/components/code_highlighter/component_icon.gif&amp;quot;) no-repeat right top;&quot; title=&quot;web crawling&quot;&gt;; 압살맨 티스토리 apsalman.tistory.com&lt;br /&gt; CoordMode, Mouse, Screen&lt;br /&gt; &lt;br /&gt; #NoTrayIcon&lt;br /&gt; Global wh := ComObjCreate(&quot;WinHTTP.WinHTTPRequest.5.1&quot;) ;WinHTTP 오브젝트 생성&lt;br /&gt; ,req := ComObjCreate(&quot;MSXML2.XMLHTTP.6.0&quot;) ;XMLHTTP 오브젝트 생성&lt;br /&gt; ;----------------------------------Gui 영역----------------------------------&lt;br /&gt; Gui, Add, Text, x10 y11 w70 h20, 사이트 주소&lt;br /&gt; Gui, Add, Edit, x80 y8.5 w350 h20 vSiteLink, &lt;br /&gt; Gui, Add, Button, x435 y7.5 w60 h22 gSearch, 검 색&lt;br /&gt; &lt;br /&gt; Gui, Add, Text, x0 y32 w510 0x10,&lt;br /&gt; Gui, Add, GroupBox, x5 y40 w90 h40, 제거 옵션&lt;br /&gt; Gui, Add, CheckBox, x15 y55 w70 h20 vFilterBlank, 공백 제거&lt;br /&gt; &lt;br /&gt; Gui, Add, GroupBox, x100 y40 w305 h40, 방식 선택 (미선택은 WinHTTP)&lt;br /&gt; Gui, Add, Radio, x105 y55 w70 h20 gSetEnc vRadio1, ReadURL&lt;br /&gt; Gui, Add, Radio, x180 y55 w70 h20 vRadio2, URLdown&lt;br /&gt; Gui, Add, Radio, x255 y55 w70 h20 vRadio3, WinHTTP&lt;br /&gt; Gui, Add, Radio, x330 y55 w70 h20 vRadio4, xmlHTTP&lt;br /&gt; &lt;br /&gt; Gui, Add, GroupBox, x410 y40 w85 h40, 소요시간&lt;br /&gt; GUi, Add, Text, x430 y58 w60 h20 vUseTime, &lt;br /&gt; &lt;br /&gt; Gui, Add, Edit, x5 y85 w490 h200 vResultBox, &lt;br /&gt; &lt;br /&gt; Gui, Add, Button, x5 y290 w100 h22 gCopy, 복사&lt;br /&gt; ;~ Gui, Add, Button, x115 y290 w100 h22 gFind, 검색&lt;br /&gt; ;~ Gui, Add, Button, x225 y290 w100 h22 gChange, 바꾸기&lt;br /&gt; &lt;br /&gt; ;~ Gui, Add, Edit, x5 y320 w100 h20 vBStr&lt;br /&gt; ;~ Gui, Add, Edit, x115 y320 w100 h20 vAStr&lt;br /&gt; ;~ Gui, Add, Button, x225 y319 w60 h22 gChangeStr, 바꾸기&lt;br /&gt; &lt;br /&gt; Gui, Show, w500 h317, 웹 통합 크롤링&lt;br /&gt; &lt;br /&gt; Gui, 2:Margin, 0, 0&lt;br /&gt; Gui, 2:Add, ComboBox, x0 y0 w80 gEncod vEncoding, UTF-8||UTF-16|cp949&lt;br /&gt; Gui, 2:-ToolWindow -Caption -Border&lt;br /&gt; ;----------------------------------Gui 영역----------------------------------&lt;br /&gt; return&lt;br /&gt; &lt;br /&gt; Search: ;검색 버튼 클릭 시 작동&lt;br /&gt; StartTime := A_TickCount&lt;br /&gt; Gui, SubMit, NoHide&lt;br /&gt; &lt;br /&gt; SearchType := Radio1?1:Radio2?2:Radio3?3:Radio4?4:4&lt;br /&gt; Result := FilTerblank?RegExReplace(RegExReplace(RegExReplace(SearchType=1?ReadURL(SiteLink, Encoding):SearchType=2?URLDownloadToFile(SiteLink):SearchType=4?HTTP(&quot;req&quot;,SiteLink):HTTP(&quot;wh&quot;,SiteLink), &quot; &quot;, &quot;&quot;), &quot; &quot;, &quot;&quot;), &quot;`n`n&quot;, &quot;&quot;):SearchType=1?ReadURL(SiteLink, Encoding):SearchType=2?URLDownloadToFile(SiteLink):SearchType=4?HTTP(&quot;req&quot;,SiteLink):HTTP(&quot;wh&quot;,SiteLink)&lt;br /&gt; GuiControl, , ResultBox, % Result&lt;br /&gt; FinishTime := A_TickCount - StartTime&lt;br /&gt; GuiControl, , UseTime, % FinishTime &quot;ms&quot;&lt;br /&gt; return&lt;br /&gt; &lt;br /&gt; SetEnc:&lt;br /&gt; MouseGetPos, mx, my&lt;br /&gt; Gui, 2:Show, % &quot;x&quot; mx-60 &quot; y&quot; my+15&lt;br /&gt; return&lt;br /&gt; &lt;br /&gt; Encod:&lt;br /&gt; Gui, 2:Submit, NoHide&lt;br /&gt; Enc := Encoding&lt;br /&gt; Gui, 2:Hide&lt;br /&gt; return&lt;br /&gt; &lt;br /&gt; Copy: ;크롤링한 내용을 클립보드에 복사&lt;br /&gt; ClipBoard := Result&lt;br /&gt; ToolTip, 복사되었습니다.&lt;br /&gt; Sleep, 1000&lt;br /&gt; ToolTip&lt;br /&gt; return&lt;br /&gt; &lt;br /&gt; ;----------------------------------미 구현----------------------------------&lt;br /&gt; ;~ Find: ;크롤링한 내용 안에서 키워드 검색&lt;br /&gt; ;~ return&lt;br /&gt; &lt;br /&gt; ;~ Change: ;크롤링한 내용 안에서 키워드 변경&lt;br /&gt; ;~ if(StatusChange = &quot;&quot;)&lt;br /&gt; ;~ {&lt;br /&gt; ;~ StatusChange := 1&lt;br /&gt; ;~ Gui, Show, w500 h345, 웹 통합 크롤링&lt;br /&gt; ;~ }&lt;br /&gt; ;~ else&lt;br /&gt; ;~ {&lt;br /&gt; ;~ StatusChange := &quot;&quot;&lt;br /&gt; ;~ Gui, Show, w500 h317, 웹 통합 크롤링&lt;br /&gt; ;~ }&lt;br /&gt; ;~ return&lt;br /&gt; &lt;br /&gt; ;~ ChangeStr:&lt;br /&gt; ;~ Gui, Submit, NoHide&lt;br /&gt; ;~ StringReplace, ResultChange, Result, BStr, AStr&lt;br /&gt; ;~ GuiControl, , ResultBox, %ResultChange%&lt;br /&gt; ;~ return&lt;br /&gt; ;----------------------------------미 구현----------------------------------&lt;br /&gt; &lt;br /&gt; GuiClose:&lt;br /&gt; ExitApp&lt;br /&gt; &lt;br /&gt; URLDownloadToFile(URL) {&lt;br /&gt; URLDownloadToFile, % URL, Error.txt&lt;br /&gt; FileRead, Result, Error.txt&lt;br /&gt; FileDelete, Error.txt&lt;br /&gt; return Result&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; HTTP(HttpType, URL) {&lt;br /&gt; %HttpType%.Open(&quot;Get&quot;, URL)&lt;br /&gt; %HttpType%.Send()&lt;br /&gt; return %HttpType%.responseText&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; ReadURL(URL, encoding = &quot;UTF-8&quot;) {&lt;br /&gt; static a := &quot;AutoHotkey/&quot; A_AhkVersion&lt;br /&gt; if (!DllCall(&quot;LoadLibrary&quot;, &quot;str&quot;, &quot;wininet&quot;) || !(h := DllCall(&quot;wininet\InternetOpen&quot;, &quot;str&quot;, a, &quot;uint&quot;, 1, &quot;ptr&quot;, 0, &quot;ptr&quot;, 0, &quot;uint&quot;, 0, &quot;ptr&quot;)))&lt;br /&gt; return 0&lt;br /&gt; c := s := 0, o := &quot;&quot;&lt;br /&gt; if (f := DllCall(&quot;wininet\InternetOpenUrl&quot;, &quot;ptr&quot;, h, &quot;str&quot;, url, &quot;ptr&quot;, 0, &quot;uint&quot;, 0, &quot;uint&quot;, 0x80003000, &quot;ptr&quot;, 0, &quot;ptr&quot;))&lt;br /&gt; {&lt;br /&gt; while (DllCall(&quot;wininet\InternetQueryDataAvailable&quot;, &quot;ptr&quot;, f, &quot;uint*&quot;, s, &quot;uint&quot;, 0, &quot;ptr&quot;, 0) &amp;amp;&amp;amp; s &amp;gt; 0)&lt;br /&gt; {&lt;br /&gt; VarSetCapacity(b, s, 0)&lt;br /&gt; DllCall(&quot;wininet\InternetReadFile&quot;, &quot;ptr&quot;, f, &quot;ptr&quot;, &amp;amp;b, &quot;uint&quot;, s, &quot;uint*&quot;, r)&lt;br /&gt; o .= StrGet(&amp;amp;b, r &amp;gt;&amp;gt; (encoding = &quot;utf-16&quot; || encoding = &quot;cp1200&quot;), encoding)&lt;br /&gt; }&lt;br /&gt; DllCall(&quot;wininet\InternetCloseHandle&quot;, &quot;ptr&quot;, f)&lt;br /&gt; }&lt;br /&gt; DllCall(&quot;wininet\InternetCloseHandle&quot;, &quot;ptr&quot;, h)&lt;br /&gt; return o&lt;br /&gt; }&lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;웹통합크롤링1.jpg&quot; src=&quot;https://autolabs.co.kr/files/attach/images/1043959/160/054/001/5bcd3d9c0c3b565845221789678f33e8.jpg&quot; /&gt;&lt;/p&gt; &lt;p&gt;프로그램 실행 시 나오는 Gui 입니다.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;사이트를 입력 후 검색을 누르면 밑에 Edit 에 element 결과를 보여줍니다.&lt;/p&gt; &lt;p&gt;한글이 깨지거나&lt;/p&gt; &lt;p&gt;403-forbidden 같이 차단당한다면 방식을 선택하시면 됩니다.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;ReadURL 같은 경우에는 utf-8 utf-16 cp949 형식을 지원합니다.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;그럼 이만&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>압살맨티스토리</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/1054160</guid>
	<comments>https://autolabs.co.kr/board_Goon42/1054160#comment</comments>			<pubDate>Thu, 10 Nov 2022 07:58:43 +0900</pubDate>
		</item><item>
			<title>웹 로그인, 웹 실행클라이언트 외부 실행 스크립트.</title>
			<link>https://autolabs.co.kr/board_Goon42/1052100</link>
				<description>&lt;p&gt;DetectHiddenWindows, on&lt;br /&gt; SetBatchLines, -1&lt;br /&gt; #NoEnv&lt;br /&gt; #Singleinstance Force&lt;/p&gt; &lt;p&gt;Gui, Submit, Nohide&lt;br /&gt; Gui, Add, Edit, x12 y9 w110 h20 v_id,&lt;br /&gt; Gui, Add, Edit, x12 y39 w110 h20 v_pw +password,&lt;br /&gt; Gui, Add, Button, x132 y9 w80 h50 glogin, login&lt;br /&gt; ; Generated using SmartGUI Creator for SciTE&lt;br /&gt; Gui, Show, w224 h73, Untitled GUI&lt;br /&gt; return&lt;/p&gt; &lt;p&gt;GuiClose:&lt;br /&gt; ExitApp &lt;/p&gt; &lt;p&gt;login:&lt;br /&gt; Gui, Submit, Nohide&lt;br /&gt; id :=_id&lt;br /&gt; ps :=_pw&lt;/p&gt; &lt;p&gt;LoginUrl=https://ro.gnjoy.com/&lt;br /&gt; pwb := ComObjCreate(&quot;InternetExplorer.Application&quot;)&lt;br /&gt; pwb.Visible :=false ;트루로 변경하시면 홈페이지가 보입니다. (기본적으로 홈페이지가 없이 로그인합니다. 바로 런처가 실행되죠..)&lt;br /&gt; pwb.Navigate(LoginUrl)&lt;br /&gt; While pwb.readyState != 4 || pwb.document.readyState != &quot;complete&quot; || pwb.busy&lt;br /&gt; sleep 1000&lt;br /&gt; pwb.document.getElementById(&quot;uid&quot;).value := ID&lt;br /&gt; pwb.document.getElementById(&quot;upass&quot;).value := PS&lt;br /&gt; pwb.document.querySelector(&quot;button[type=submit]&quot;).click()&lt;br /&gt; While pwb.readyState != 4 || pwb.document.readyState != &quot;complete&quot; || pwb.busy&lt;br /&gt; sleep, 1000&lt;br /&gt; A = 40&lt;br /&gt; loop, 50 &lt;br /&gt; {&lt;br /&gt; A := A + 1&lt;br /&gt; msg := pwb.document.getElementsByTagName(&quot;A&quot;)[A].InnerText&lt;br /&gt; ;msgbox, % msg&lt;br /&gt; if ( msg = &quot;gameStart&quot;)&lt;br /&gt; {&lt;br /&gt; break&lt;br /&gt; }&lt;br /&gt; sleep, 100&lt;br /&gt; }&lt;br /&gt; pwb.document.getElementsByTagName(&quot;a&quot;)[A].click()&lt;br /&gt; sleep, 1000&lt;br /&gt; A = 170&lt;br /&gt; loop, 100 &lt;br /&gt; {&lt;br /&gt; A := A + 1&lt;/p&gt; &lt;p&gt;msg := pwb.document.getElementsByTagName(&quot;A&quot;)[A].InnerText&lt;/p&gt; &lt;p&gt;;msgbox, % msg&lt;/p&gt; &lt;p&gt;if ( msg = &quot;리플레이&quot;)&lt;br /&gt; {&lt;br /&gt; break&lt;br /&gt; }&lt;br /&gt; sleep, 100&lt;br /&gt; }&lt;br /&gt; A := A - 1&lt;br /&gt; pwb.document.getElementsByTagName(&quot;A&quot;)[A].click()&lt;br /&gt; sleep, 1000&lt;/p&gt; &lt;p&gt;B := A + 5&lt;br /&gt; pwb.document.getElementsByTagName(&quot;A&quot;)[B].click()&lt;br /&gt; sleep, 1000&lt;/p&gt; &lt;p&gt;pwb.quit()&lt;/p&gt; &lt;p&gt;소장님의 도움과 노가다로 만들었어요... 간략화는.... 못시키겠어요!!! 크흥..&lt;br /&gt; 혹시나 도움이 될지도 몰라 올려 놓아요.ㅠ.ㅠ.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; -원스크립트 출처-&lt;/p&gt; &lt;p&gt;https://autolabs.co.kr/board_Goon42/346787 :포스몬님 스크립트&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;====수정====추가====&lt;br /&gt; &lt;/p&gt; &lt;p&gt;DetectHiddenWindows, on&lt;br /&gt; SetBatchLines, -1&lt;br /&gt; #NoEnv&lt;br /&gt; #Singleinstance Force&lt;/p&gt; &lt;p&gt;Gui, Submit, Nohide&lt;br /&gt; Gui, Add, Edit, x12 y9 w110 h20 v_id,&lt;br /&gt; Gui, Add, Edit, x12 y39 w110 h20 v_pw +password,&lt;br /&gt; Gui, Add, Button, x132 y9 w80 h50 glogin, login&lt;br /&gt; gui, add, listbox, x12 y69 w200 h40 vnotice_list,log&lt;br /&gt; ; Generated using SmartGUI Creator for SciTE&lt;br /&gt; Gui, Show, w224 h173, Rogin&lt;br /&gt; return&lt;/p&gt; &lt;p&gt;GuiClose:&lt;br /&gt; ExitApp&lt;/p&gt; &lt;p&gt;login:&lt;br /&gt; Enter::&lt;br /&gt; Gui, Submit, Nohide&lt;br /&gt; id :=_id&lt;br /&gt; ps :=_pw&lt;/p&gt; &lt;p&gt;logmsg(&quot;홈페이지 접속&quot;)&lt;br /&gt; LoginUrl=https://ro.gnjoy.com/&lt;br /&gt; pwb := ComObjCreate(&quot;InternetExplorer.Application&quot;)&lt;br /&gt; ;pwb.Visible := ;true ;false ;트루로 변경하시면 홈페이지가 보입니다. (기본적으로 홈페이지가 없이 로그인합니다. 바로 런처가 실행되죠..)&lt;br /&gt; pwb.Navigate(LoginUrl)&lt;br /&gt; While pwb.readyState != 4 || pwb.document.readyState != &quot;complete&quot; || pwb.busy&lt;br /&gt; sleep 1000&lt;br /&gt; A:= pwb.document.documentElement.innerHTML&lt;br /&gt; IfInString,A,&amp;gt;login&amp;lt;/BUTTON&amp;gt;&lt;br /&gt; {&lt;br /&gt; logmsg(&quot;로그인여부확인&quot;)&lt;br /&gt; sleep,100&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; logmsg(&quot;로그아웃합니다&quot;)&lt;br /&gt; gosub, logout&lt;br /&gt; return&lt;br /&gt; }&lt;br /&gt; pwb.document.getElementById(&quot;uid&quot;).value := ID&lt;br /&gt; pwb.document.getElementById(&quot;upass&quot;).value := PS&lt;br /&gt; pwb.document.querySelector(&quot;button[type=submit]&quot;).click()&lt;br /&gt; While pwb.readyState != 4 || pwb.document.readyState != &quot;complete&quot; || pwb.busy&lt;br /&gt; logmsg(&quot;로그인완료&quot;)&lt;br /&gt; sleep, 1000&lt;/p&gt; &lt;p&gt;A = 40&lt;br /&gt; loop, 50&lt;br /&gt; {&lt;br /&gt; A := A + 1&lt;br /&gt; msg := pwb.document.getElementsByTagName(&quot;A&quot;)[A].InnerText&lt;br /&gt; logmsg(&quot;웹-게임스타트&quot;)&lt;br /&gt; if ( msg = &quot;gameStart&quot;)&lt;br /&gt; {&lt;br /&gt; break&lt;br /&gt; }&lt;br /&gt; sleep, 100&lt;br /&gt; }&lt;br /&gt; pwb.document.getElementsByTagName(&quot;a&quot;)[A].click()&lt;br /&gt; sleep, 1000&lt;/p&gt; &lt;p&gt;A = 170&lt;br /&gt; loop, 100&lt;br /&gt; {&lt;br /&gt; A := A + 1&lt;br /&gt; msg := pwb.document.getElementsByTagName(&quot;A&quot;)[A].InnerText&lt;br /&gt; logmsg(&quot;팝업-서버선택&quot;)&lt;br /&gt; if ( msg = &quot;리플레이&quot;)&lt;br /&gt; {&lt;br /&gt; break&lt;br /&gt; }&lt;br /&gt; sleep, 100&lt;br /&gt; }&lt;br /&gt; A := A - 1&lt;br /&gt; pwb.document.getElementsByTagName(&quot;A&quot;)[A].click()&lt;br /&gt; sleep, 1000&lt;br /&gt; logmsg(&quot;팝업-게임스타트&quot;)&lt;br /&gt; B := A + 5&lt;br /&gt; pwb.document.getElementsByTagName(&quot;A&quot;)[B].click()&lt;br /&gt; sleep, 1000&lt;br /&gt; logmsg(&quot;홈페이지닫기&quot;)&lt;br /&gt; pwb.quit()&lt;br /&gt; return&lt;/p&gt; &lt;p&gt;logout:&lt;br /&gt; A = 40&lt;br /&gt; loop, 50&lt;br /&gt; {&lt;br /&gt; logmsg(&quot;로그아웃 중&quot;)&lt;br /&gt; A := A + 1&lt;br /&gt; msg := pwb.document.getElementsByTagName(&quot;A&quot;)[A].InnerText&lt;br /&gt; ;msgbox, % msg&lt;br /&gt; if ( msg = &quot;gameStart&quot;)&lt;br /&gt; {&lt;br /&gt; break&lt;br /&gt; }&lt;br /&gt; sleep, 100&lt;br /&gt; }&lt;br /&gt; a:=a+7&lt;br /&gt; pwb.document.getElementsByTagName(&quot;a&quot;)[A].click()&lt;br /&gt; logmsg(&quot;로그아웃 완료&quot;)&lt;br /&gt; gosub, login&lt;br /&gt; return&lt;/p&gt; &lt;p&gt;logmsg(listmessage)&lt;br /&gt; {&lt;br /&gt; gui, submit, nohide&lt;br /&gt; formattime , nowtime,,HH:mm:ss&lt;br /&gt; guicontrol,,notice_2, %message_2%&lt;br /&gt; listMessage =%nowtime%/%message_2%/%listMessage%&lt;br /&gt; guicontrol,,notice_list,%listMessage%|&lt;br /&gt; }&lt;br /&gt; return&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>아는게없다</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/1052100</guid>
	<comments>https://autolabs.co.kr/board_Goon42/1052100#comment</comments>			<pubDate>Fri, 23 Sep 2022 00:48:43 +0900</pubDate>
		</item><item>
			<title>네이버에서 비트코인 관련 뉴스 크롤링 및 엑셀 저장하기.</title>
			<link>https://autolabs.co.kr/board_Goon42/958093</link>
				<description>&lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;안녕하세요. 엔지엠소프트웨어입니다. 커스텀 모듈 개발 환경을 갖추기 위한 [ &lt;a href=&quot;http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech&amp;amp;wr_id=364&quot; style=&quot;color:rgb(0,0,0);border:0px;vertical-align:middle;&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;이전 글&lt;/span&gt;&lt;/a&gt; ]을 먼저 읽어보시고 이글을 읽어야 합니다. 자~ 이제 개발 환경이 갖춰진 상태에서 아래와 같이 코드를 추가해보세요. 소스 코드에 주석을 달아두었으니 이해하는데 크게 어려움은 없을겁니다. 그래도, 중요한 몇가지는 아래에서 하나씩 알아볼께요^^&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre style=&quot;font-size:1.1em;color:rgb(51,51,51);letter-spacing:-.28px;background-color:rgb(255,255,255);&quot;&gt; &lt;code class=&quot;language-cs hljs&quot; style=&quot;padding:.5em;background:rgb(35,36,31);color:rgb(248,248,242);&quot;&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;using&lt;/span&gt; OpenQA.Selenium; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;using&lt;/span&gt; System; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;using&lt;/span&gt; System.Collections.Generic; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;using&lt;/span&gt; System.ComponentModel; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;using&lt;/span&gt; System.Linq; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;using&lt;/span&gt; System.Text; namespace CustomNaverNewsCrawler { [Serializable] &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;class&lt;/span&gt; NaverNewsCrawlerModel : NGM.Models.Interface.BaseCustomToolModel { &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; &lt;span class=&quot;hljs-xmlDocTag&quot;&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; 도구 상자에 표시될 카테고리 이름을 가져옵니다.&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; &lt;span class=&quot;hljs-xmlDocTag&quot;&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;string&lt;/span&gt; DisplayCategory =&amp;gt; &lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;웹크롤러&quot;&lt;/span&gt;; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; &lt;span class=&quot;hljs-xmlDocTag&quot;&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; 도구 상자에 표시될 액션 이름을 가져옵니다.&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; &lt;span class=&quot;hljs-xmlDocTag&quot;&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;string&lt;/span&gt; DisplayName =&amp;gt; &lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;네이버뉴스 크롤링&quot;&lt;/span&gt;; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; &lt;span class=&quot;hljs-xmlDocTag&quot;&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; 셀레니움 웹드라이브와 연결된 액션의 이름을 가져오거나 설정합니다.&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;&lt;span class=&quot;hljs-xmlDocTag&quot;&gt;///&lt;/span&gt; &lt;span class=&quot;hljs-xmlDocTag&quot;&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt; [Category(&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;Action&quot;&lt;/span&gt;)] [DisplayName(&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;웹사이트 이름&quot;&lt;/span&gt;)] [Description(&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;웹에 연결하는 웹사이트의 이름을 선택합니다.&quot;&lt;/span&gt;)] [Browsable(&lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;true&lt;/span&gt;)] [DefaultValue(&lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;null&lt;/span&gt;)] [TypeConverter(&lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;typeof&lt;/span&gt;(NGM.Models.TypeConverter.WebSiteIDConverter))] &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;string&lt;/span&gt; WebSiteName { &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;get&lt;/span&gt;; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;set&lt;/span&gt;; } &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot; style=&quot;color:rgb(166,226,46);&quot;&gt;Execute&lt;/span&gt;() { &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 크롤링한 뉴스 기사와 링크를 엑셀로 저장하는 위치입니다.&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// Environment를 사용하면 다이나믹하게 대응할 수 있는 시스템 폴더를 가져올 수 있습니다.&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;string&lt;/span&gt; fullPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), &lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;News.csv&quot;&lt;/span&gt;); &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 엔지엠 에디터의 웹 API를 사용할 때 연결된 사이트를 가져옵니다.&lt;/span&gt; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 이 부분은 http://ngmsoftware.com/bbs/board.php?bo_table=ngm5&amp;amp;wr_id=146 를 참고하세요.&lt;/span&gt; IWebDriver driver = &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;base&lt;/span&gt;.MainView.CurrentScriptView.Player.WebDriver[&lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;this&lt;/span&gt;.WebSiteName]; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 네이버뉴스를 표시하는 그룹 노드를 가져옵니다.&lt;/span&gt; IWebElement newsRootElement = driver.FindElement(By.XPath(&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;@&quot;//*[@id=&#039;main_pack&#039;]/section/div/div[3]/ul&quot;&lt;/span&gt;)); &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 그룹안에는 각각의 뉴스들이 포함되어 있습니다. 각각의 페이지에는 10개의 뉴스가 표시됩니다.&lt;/span&gt; List&amp;lt;IWebElement&amp;gt; news = newsRootElement.FindElements(By.ClassName(&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;bx&quot;&lt;/span&gt;)).ToList(); &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;string&lt;/span&gt; contents = &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;string&lt;/span&gt;.Empty; &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 10개의 뉴스를 반복하면서 탐색하고, 뉴스 제목과 링크를 만듭니다.&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;foreach&lt;/span&gt; (IWebElement n &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;in&lt;/span&gt; news) { IWebElement link = n.FindElement(By.ClassName(&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;news_tit&quot;&lt;/span&gt;)); &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 뉴스 제목에 CSV 파일의 세퍼레이터(Seperator, 구분자)가 포함되어 있는 경우 처리하는 로직입니다.&lt;/span&gt; contents += $&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;{link.Text.Replace(&quot;&lt;/span&gt;,&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;, &quot;&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;)},{link.GetAttribute(&quot;&lt;/span&gt;href&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;)}{Environment.NewLine}&quot;&lt;/span&gt;; } &lt;span class=&quot;hljs-comment&quot; style=&quot;color:rgb(117,113,94);&quot;&gt;// 네이버뉴스에서 크롤링한 내용들을 엑셀 파일(CSV)로 저장합니다.&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;using&lt;/span&gt; (System.IO.StreamWriter file = &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;new&lt;/span&gt; System.IO.StreamWriter(fullPath, &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;false&lt;/span&gt;, Encoding.UTF8)) { file.WriteLine(&lt;span class=&quot;hljs-string&quot; style=&quot;color:rgb(230,219,116);&quot;&gt;&quot;제목,링크&quot;&lt;/span&gt;); file.Write(contents); } } } }&lt;/code&gt;&lt;/pre&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;첫번째 라인의 Serializable(시리얼라이저블, 직렬화 가능)은 엔지엠 에디터의 액션으로 직렬화하여 저장할 수 있게 해줍니다. 이는 클래스의 고유한 Attribute(어트리뷰트, 특성)를 나타냅니다. 이 특성이 없으면 엔지엠 에디터에 액션을 추가하고 동작은 되지만, 저장할 수 없게됩니다. 그러니 꼭~!!! 이 특성을 모델에 부여해야 합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre style=&quot;font-size:1.1em;color:rgb(51,51,51);letter-spacing:-.28px;background-color:rgb(255,255,255);&quot;&gt; &lt;code class=&quot;language-cs hljs&quot; style=&quot;padding:.5em;background:rgb(35,36,31);color:rgb(248,248,242);&quot;&gt; [Serializable] &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;class&lt;/span&gt; NaverNewsCrawlerModel : NGM.Models.Interface.BaseCustomToolModel&lt;/code&gt;&lt;/pre&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;두번째 라인에 보면 클래스 옆에 &quot;NGM.Models.Interface.BaseCustomToolModel&quot;이 상속되어 있는걸 알 수 있습니다. 이 클래스는 추상 클래스(Abstract, 앱스트랙트)로 상속 받은 자식 클래스가 인터페이스를 따르도록 강제할 수 있습니다. 비주얼 스튜디오는 추상화와 인터페이스를 자동으로 구현해줍니다. 물론, 적절하게 수정해야 하죠. [ &lt;a href=&quot;http://ngmsoftware.com/bbs/board.php?bo_table=study&amp;amp;wr_id=94&quot; style=&quot;color:rgb(0,0,0);border:0px;vertical-align:middle;&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;추상화&lt;/span&gt;&lt;/a&gt; ]에 대한 내용은 한번씩 읽어보시면 도움이 될겁니다. 다형성은 [ &lt;a href=&quot;http://ngmsoftware.com/bbs/board.php?bo_table=study&amp;amp;wr_id=287&quot; style=&quot;color:rgb(0,0,0);border:0px;vertical-align:middle;&quot;&gt;&lt;span&gt;OOP의 중요한 개념&lt;/span&gt;&lt;/a&gt; ]입니다. 다형성을 적용하려면 추상화와 인터페이스는 필수예요^^;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;아래와같이 커스텀 모듈을 개발할 수 있는 추상 클래스와 인터페이스를 제공하고 있습니다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;T45Cgf0.png&quot; src=&quot;https://i.imgur.com/T45Cgf0.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;784&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;추상 메소드인 Execute를 직접 구현해야 합니다. 이 메소드는 엔지엠 에디터에서 커스텀 액션이 실행될 때 자동으로 호출되는 메소드입니다. 그렇기 때문에 이 메소드를 구현할 때 몇가지 패턴을 따라야 합니다. 가령 시작할 때 속성을 초기화하고, 마지막에 외부에 알려야할 정보들을 속성에 넣어줘야 합니다. 이런 내용들도 커스텀 모듈 강좌에 자세하게 설명되어 있으니 한번쯤 정독하시는걸 추천 드립니다^^&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;pre style=&quot;font-size:1.1em;color:rgb(51,51,51);letter-spacing:-.28px;background-color:rgb(255,255,255);&quot;&gt; &lt;code class=&quot;language-cs hljs&quot; style=&quot;padding:.5em;background:rgb(35,36,31);color:rgb(248,248,242);&quot;&gt;&lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;hljs-keyword&quot; style=&quot;color:rgb(249,38,114);&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;hljs-title&quot; style=&quot;color:rgb(166,226,46);&quot;&gt;Execute&lt;/span&gt;()&lt;/code&gt;&lt;/pre&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;이제 마지막입니다. 프로젝트를 컴파일하세요. 아래와 같이 라이브러리가 만들어집니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;OzbvifA.png&quot; src=&quot;https://i.imgur.com/OzbvifA.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;727&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;엔지엠 에디터를 실행하고, ①&lt;span&gt;사용자 도구&lt;/span&gt;를 확인 해보세요. 아직은 아무것도 없을겁니다. 우리가 만든 커스텀 모듈을 설치하기 위해 ②&lt;span&gt;도구 모듈 설치&lt;/span&gt;를 클릭하세요. 이 메뉴는 &lt;span&gt;관리자&lt;/span&gt;에 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;c9L9zvj.png&quot; src=&quot;https://i.imgur.com/c9L9zvj.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;888&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;span&gt;CustomNaverNewsCrawler.dll&lt;/span&gt; 을 선택하세요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;Hkub7As.png&quot; src=&quot;https://i.imgur.com/Hkub7As.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;665&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;커스텀 모듈이 설치되면 사용자 도구에 &lt;span&gt;웹크롤러&lt;/span&gt;가 추가된것을 볼 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;aBOIyjg.png&quot; src=&quot;https://i.imgur.com/aBOIyjg.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;886&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;span&gt;웹크롤러&lt;/span&gt; 카테고리 안에 &lt;span&gt;네이버뉴스 크롤링&lt;/span&gt; 액션이 추가 되었네요^^&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;o9eJF6v.png&quot; src=&quot;https://i.imgur.com/o9eJF6v.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;888&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;첨부되어 있는 스크립트를 열어보세요. 웹 API에 대해 자세한 내용은 [ &lt;a href=&quot;http://ngmsoftware.com/bbs/board.php?bo_table=ngm5&amp;amp;sca=&amp;amp;sop=and&amp;amp;sfl=wr_subject&amp;amp;stx=%EC%9B%B9+API&quot; style=&quot;color:rgb(0,0,0);border:0px;vertical-align:middle;&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;메뉴얼&lt;/span&gt;&lt;/a&gt; ]을 참고하시고, 미리 학습하시는게 좋습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;4ozmhcA.png&quot; src=&quot;https://i.imgur.com/4ozmhcA.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;888&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;실행하면 바탕화면에 &quot;&lt;span&gt;News.csv&lt;/span&gt;&quot;가 만들어집니다. 내용을 보면 네이버뉴스에서 비트코인 관련 기사들의 제목과 뉴스 원본을 볼 수 있는 링크가 정리되어 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;dQh0yaL.png&quot; src=&quot;https://i.imgur.com/dQh0yaL.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;1200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;사실, 좀 더 복잡하게 크롤링할 수 있게 만들수도 있는데요. 간단하게 진행하기 위해 이정도로만 처리 했습니다. 커스텀 모듈 개발에 익숙해지면 복잡한 로직과 이미지 분석, 문자 판독은 엔지엠에 맡겨두고 자신의 회사 업무만 모아서 처리할 수 있습니다. 엔지엠 RPA가 활성화되고, 많은 회사에서 이용한다면 엑셀, 워드, 파워포인트를 비롯한 여러가지 인터페이스가 좀 더 쉽게 연결될 수 있을겁니다. 그리고 무엇보다 중요한~ 리포팅도 커스텀으로 제공할 수 있겠죠? QA 업무쪽에 소프트웨어 품질 관리에 도입했다면 변경점에 대해 재연 테스트를 진행하고 결과를 리포팅해야 합니다. 리포트는 단순히 테스트 케이스에 대한 결과일수도 있고, 지표를 그래프로 표시할수도 있습니다. 수백 수천건의 테스트 케이스를 사람이 직접 하기보다는 엔지엠 RPA를 이용해보는건 어떨까요?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>	<category>크롤링</category><category>스크레이퍼</category><category>업무자동화</category>			<dc:creator>소심비형</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/958093</guid>
	<comments>https://autolabs.co.kr/board_Goon42/958093#comment</comments>			<pubDate>Sat, 05 Jun 2021 11:06:12 +0900</pubDate>
		</item><item>
			<title>[고급 사용자] 웹 API를 이용해서 순차적으로 버튼 클릭하기.</title>
			<link>https://autolabs.co.kr/board_Goon42/957803</link>
				<description>&lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;안녕하세요. 엔지엠소프트웨어입니다. 앞서 진행했던 이미지 매치로 웹 페이지에 표시되는 숫자를 순차적으로 클릭하는 성능 테스트를 진행 했었습니다. 이 내용은 [ &lt;a href=&quot;http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech&amp;amp;wr_id=361&quot; style=&quot;color:rgb(0,0,0);border:0px;vertical-align:middle;&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;여기&lt;/span&gt;&lt;/a&gt; ]에서 확인할 수 있습니다. 이 테스트를 진행하는 환경이 웹이다보니 엔지엠에서 제공하는 웹 API를 이용해서 어떻게 처리할 수 있는지도 알아보면 좋을듯해서 이 내용을 작성하게 되었습니다. 스크립트는 이미지 매치로 처리하는게 가장 쉽습니다. 웹 API는 어느정도 웹에 대한 지식이 필요하므로, 이 내용은 간단하게 이런 기능을 활용할수도 있구나 정도로 봐주시면 좋겠네요^^; 우선, 첨부되어 있는 스크립트를 열어서 실행 해보세요. 에디터로 약 5.2초정도 소요되는걸 알 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;dPvPAeB.gif&quot; src=&quot;https://i.imgur.com/dPvPAeB.gif&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;1200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;플레이어에서 실행해볼까요? 약 1.9초정도 소요되었습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;GMlm3Ek.gif&quot; src=&quot;https://i.imgur.com/GMlm3Ek.gif&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;1200&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;이미지 매치보다 좀 더 깔끔하게 처리가 되는거 같습니다. 다만~ 스크립트가 좀 복잡한게 문제네요. 이번에 웹 API에 대해 개선할 부분들을 처리하면서 예제로 만들어본 스크립트입니다. 특정 노드의 하위 노드 집합을 가져와서 [ &lt;a href=&quot;http://ngmsoftware.com/bbs/board.php?bo_table=ngm5&amp;amp;wr_id=124&quot; style=&quot;color:rgb(0,0,0);border:0px;vertical-align:middle;&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;Foreach 반복&lt;/span&gt;&lt;/a&gt; ]으로 순회하면서 클릭하도록 만들었습니다. 일부 몇가지 속성이 추가되었으니 웹 업무를 자동화하고 싶으신 분들은 업데이트 후 테스트 해보시면 좋을듯합니다. 이외에도 웹 관련 반복 작업에 필요한 기능이 있으면 요청해주세요. 대부분은 커스텀으로 제작해서 에디터에 추가할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>	<category>[고급</category><category>사용자]</category><category>웹</category><category>API를</category><category>이용해서</category><category>순차적으로</category><category>버튼</category><category>클릭하기.</category>			<dc:creator>소심비형</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/957803</guid>
	<comments>https://autolabs.co.kr/board_Goon42/957803#comment</comments>			<pubDate>Fri, 04 Jun 2021 06:45:31 +0900</pubDate>
		</item><item>
			<title>네이버 카페 1빠 댓글 달기 스크립트 만들기.</title>
			<link>https://autolabs.co.kr/board_Goon42/910039</link>
				<description>&lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;안녕하세요. 엔지엠소프트웨어입니다. 첨부되어 있는 스크립트는 네이버 카페에 &quot;&lt;span&gt;★ 새글&lt;/span&gt;&quot;로 시작되는 제목의 글이 등록되면, 댓글을 빠르게 달아주는 학습용 스크립트입니다. 새글을 캐치하기 위해 아주 빠르게(?) 새로고침을 하면서 체크합니다. 너무 빠르게 새로고침을 발생 시키면 네이버로부터 제재를 받을 수 있으니 유의하세요^^&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;img alt=&quot;No2rIVr.png&quot; src=&quot;https://i.imgur.com/No2rIVr.png&quot; style=&quot;margin:0px;padding:0px;vertical-align:middle;font-size:1em;height:auto;&quot; width=&quot;888&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;스크립트를 열어서 보면, 비교 대상 문자를 변경할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;또한, 새로고침 시간도 적절하게 수정해서 사용하면 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;댓글 클릭까지만 구현되어 있고, 실제로 댓글을 달지 않으니 안심하셔도 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin:0px;padding:0px;font-size:14px;color:rgb(51,51,51);line-height:1.6em;font-family:&#039;Noto Sans KR&#039;, sans-serif;letter-spacing:-.28px;background-color:rgb(255,255,255);text-align:justify;&quot;&gt;&lt;span style=&quot;line-height:35px;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;감사합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>	<category>무료</category><category>매크로</category><category>NGM</category><category>오토</category><category>자동</category><category>활성</category><category>비활성</category><category>하드웨어</category><category>우회</category><category>VMware</category>			<dc:creator>소심비형</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/910039</guid>
	<comments>https://autolabs.co.kr/board_Goon42/910039#comment</comments>			<pubDate>Sat, 30 Jan 2021 11:41:18 +0900</pubDate>
		</item><item>
			<title>홍보 마케팅 - 매크로를 이용하여 크롤링을 자동화하는 방법.</title>
			<link>https://autolabs.co.kr/board_Goon42/808390</link>
				<description>&lt;p&gt;안녕하세요. 소심비형입니다. 오늘 알아볼 내용은 스크린샷 기능입니다. 이미 NGM에는 스크린샷 기능이 포함되어 있는데요. 자세한 내용은 [&amp;nbsp;&lt;b&gt;&lt;a data-mce-href=&quot;https://cafe.naver.com/ngmsoft/962&quot; href=&quot;https://cafe.naver.com/ngmsoft/962&quot;&gt;여기&lt;/a&gt;&lt;/b&gt;&amp;nbsp;]를 참고하시면 됩니다. 웹 API에 있는 스크린샷은 함수에 있는 화면 캡쳐와 동작 방식이 다릅니다. 연결된 웹에만 사용할 수 있기 때문입니다.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&amp;nbsp;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;어차피 셀레니움을 이용해서 웹 자동화를 구성한다면 이 기능은 크게 필요하지 않을 수 있습니다. 하지만, Headless(창 없이 백그라운드로 처리) 상태로 동작한다면 틈틈히 제대로 동작하는지 확인하거나 모니터링이 필요하죠^^;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&amp;nbsp;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;우선 간단한 테스트를 위해 아래와 같이 새로운 스크립트를 추가합니다.&lt;/p&gt; &lt;p&gt;&lt;b&gt;File &amp;gt; 새로 만들기 &amp;gt; 스크립트 (단축키: Ctrl+N)&lt;/b&gt;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/kIBUN/btqz03PBVe3/O3U0TqP1yvDHJqrZC79nH0/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/kIBUN/btqz03PBVe3/O3U0TqP1yvDHJqrZC79nH0/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/kIBUN/btqz03PBVe3/O3U0TqP1yvDHJqrZC79nH0/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;오른쪽 컨트롤 독 하단에서&amp;nbsp;&lt;b&gt;외부 API&lt;/b&gt;를 클릭하세요~&lt;/p&gt; &lt;ol&gt; &lt;li&gt;웹 API 카테고리 확장&lt;/li&gt; &lt;li&gt;스크린샷 클릭&lt;/li&gt; &lt;li&gt;드래그 앤 드롭으로 스크립트에 추가&lt;/li&gt; &lt;li&gt;속성 클릭&lt;/li&gt; &lt;/ol&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/kHTmc/btqz2EagoRK/e2aGhyiQGnmgOK4b8cJ0N1/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/kHTmc/btqz2EagoRK/e2aGhyiQGnmgOK4b8cJ0N1/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/kHTmc/btqz2EagoRK/e2aGhyiQGnmgOK4b8cJ0N1/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;이 기능은 독립적으로 혼자 사용할 수 없기 때문에 먼저 웹 API의 연결을 통해 웹드라이버에 생성해야 합니다. 관련 내용은 매뉴얼의&amp;nbsp;&lt;b&gt;웹 API&lt;/b&gt;를 검색하여 학습해야 합니다. 첨부되어 있는 스크립트를 다운로드 받은 후 열어보세요. 아래와 같이 기본적인 내용은 모두 만들어져 있습니다.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/3jhst/btqz0327xMP/abxJYOA3h9JG4lb3yK7tU0/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/3jhst/btqz0327xMP/abxJYOA3h9JG4lb3yK7tU0/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/3jhst/btqz0327xMP/abxJYOA3h9JG4lb3yK7tU0/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;아래 그림과 같이 텍스트의 내용을 자신의 네이버 아이디와 비밀번호로 변경하세요.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/dRJzl2/btqz1BedScG/btKduPAkagSqMAKGfZF4f1/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/dRJzl2/btqz1BedScG/btKduPAkagSqMAKGfZF4f1/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/dRJzl2/btqz1BedScG/btKduPAkagSqMAKGfZF4f1/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;이 스크립트를 실행하고 바탕화면에 보면 네이버 로그인의 캡챠가 실행된 것을 확인할 수 있을겁니다. 그리고, 이 스크립트는 Headless 방식으로 동작하기 때문에 크롬 브라우저가 실행되지 않죠. 그래서 스크립트를 제작하기가 까다롭고, 내용을 확인하기가 어렵습니다. 스크린샷을 구간별로 컴퓨터에 저장하고 내용을 파악해야 합니다.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&amp;nbsp;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;속성 정보&lt;/b&gt;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/bh7khx/btqzZ2jk933/WueK4WmqnbjKHdbD8rSIy0/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/bh7khx/btqzZ2jk933/WueK4WmqnbjKHdbD8rSIy0/img.png&quot; data-origin-height=&quot;525&quot; data-origin-width=&quot;200&quot; src=&quot;https://k.kakaocdn.net/dn/bh7khx/btqzZ2jk933/WueK4WmqnbjKHdbD8rSIy0/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;b&gt;기본 작업&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;사용 여부: 이 액션의 사용 여부를 설정합니다. False로 설정하면 이 액션은 실행되지 않습니다.&lt;/li&gt; &lt;li&gt;설명: 이 액션의 부가적인 설명을 입력합니다.&lt;/li&gt; &lt;li&gt;실행 전 지연: 이 액션이 실행되기 전 지연 시간을 입력합니다.&lt;/li&gt; &lt;li&gt;실행 후 지연: 이 액션이 실행된 후 지연 시간을 입력합니다.&lt;/li&gt; &lt;li&gt;아이디: 스크립트 내에서 유니크한 아이디를 입력합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;변수&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;가져오기: 글로벌 또는 로컬 변수에 저장되어 있는 값을 이 액션의 속성 값으로 가져옵니다.&lt;/li&gt; &lt;li&gt;추가하기: 이 액션의 속성 값을 글로벌 또는 로컬 변수에 저장합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;작업&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;덮어쓰기: 이미지를 저장할 때 동일한 이름이면 덮어쓰기가 됩니다. 이 값을 False로 설정하면 자동으로 인덱스가 붙어서 덮어쓰기를 방지할 수 있습니다.&lt;/li&gt; &lt;li&gt;웹브라우저: 연결된 웹 브라우저를 선택하세요.&lt;/li&gt; &lt;li&gt;이미지 포멧: 저장할 이미지의 형식을 선택하세요.&lt;/li&gt; &lt;li&gt;저장 위치: 이미지가 저장될 위치를 선택하세요.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;개발자에게 후원하기&lt;/b&gt;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/duRarQ/btqzZdeApnM/q8i7p7p5ByTfhUaKLzLsC1/img.jpg&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/duRarQ/btqzZdeApnM/q8i7p7p5ByTfhUaKLzLsC1/img.jpg&quot; data-origin-height=&quot;100&quot; data-origin-width=&quot;365&quot; src=&quot;https://k.kakaocdn.net/dn/duRarQ/btqzZdeApnM/q8i7p7p5ByTfhUaKLzLsC1/img.jpg&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;추천, 구독, 홍보&lt;/b&gt;&amp;nbsp;꼭~ 부탁드립니다.&lt;/p&gt; &lt;p&gt;여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~&lt;/p&gt; &lt;p&gt;감사합니다~&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>소심비형</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/808390</guid>
	<comments>https://autolabs.co.kr/board_Goon42/808390#comment</comments>			<pubDate>Tue, 26 Nov 2019 07:55:49 +0900</pubDate>
		</item><item>
			<title>홍보 마케팅 필수 기능 - 웹 크롤링 수집과 데이타 분석</title>
			<link>https://autolabs.co.kr/board_Goon42/808373</link>
				<description>&lt;p&gt;안녕하세요. 소심비형입니다. 요즘 웹 관련한 문의가 많아서 크롤링이나 스크래이퍼 또는 봇 기능을 좀 더 추가할 예정입니다. 그중에 하나가 스크래이퍼인데요. 현재 NGM은 셀레니움을 이용한 API만 제공하고 있습니다. 기능에 한계가 있어서~ 고차원적인 문제를 해결하는데 어려움이 있습니다. 물론, 하드코어하게 스크립트를 구성하면 되긴 하지만요^^;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/8fjE2/btqzYCL0XKE/GoWJdB71rNPCw2g9PxkQfk/img.jpg&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/8fjE2/btqzYCL0XKE/GoWJdB71rNPCw2g9PxkQfk/img.jpg&quot; data-origin-height=&quot;224&quot; data-origin-width=&quot;658&quot; src=&quot;https://k.kakaocdn.net/dn/8fjE2/btqzYCL0XKE/GoWJdB71rNPCw2g9PxkQfk/img.jpg&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;웹 크롤러와 다르게 스크래이퍼는 설정한 조건에 맞게 로컬 컴퓨터로 다운로드 받을 수 있습니다. 기능은 대부분 유사하지만, 셀레니움을 사용하지 않는다는 점이 가장 큰 차이점이죠. 하지만, 셀레니움처럼 브라우저를 제어하거나 어떤 명령을 처리하지는 못합니다^^;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&amp;nbsp;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;우선 간단한 테스트를 위해 아래와 같이 새로운 스크립트를 추가합니다.&lt;/p&gt; &lt;p&gt;&lt;b&gt;File &amp;gt; 새로 만들기 &amp;gt; 스크립트 (단축키: Ctrl+N)&lt;/b&gt;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/GZlcL/btqzZLuvxUm/A9cIH6TqtTQabovvNbgGvk/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/GZlcL/btqzZLuvxUm/A9cIH6TqtTQabovvNbgGvk/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/GZlcL/btqzZLuvxUm/A9cIH6TqtTQabovvNbgGvk/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;오른쪽 컨트롤 독 하단에서&amp;nbsp;&lt;b&gt;외부 API&lt;/b&gt;를 클릭하세요~&lt;/p&gt; &lt;ol&gt; &lt;li&gt;웹 API 카테고리 확장&lt;/li&gt; &lt;li&gt;웹 스크래이퍼 클릭&lt;/li&gt; &lt;li&gt;드래그 앤 드롭으로 스크립트에 추가&lt;/li&gt; &lt;li&gt;속성 클릭&lt;/li&gt; &lt;/ol&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/tKYGL/btqzYaCus3z/Zy3czIFkyyHIoQQmIL9Xzk/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/tKYGL/btqzYaCus3z/Zy3czIFkyyHIoQQmIL9Xzk/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/tKYGL/btqzYaCus3z/Zy3czIFkyyHIoQQmIL9Xzk/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;네이버의 매인 페이지를 스크랩할 예정입니다. 우선 바탕 화면에 NAVER 폴더를 하나 생성 해주세요. 그리고, 아래와 같이 속성을 채워줍니다. 네이버 주소를 입력하고 스크랩한 내용들이 저장될 폴더를 선택한 후 스크립트를 실행하세요.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/Vqj2w/btqzYah90ny/lUbuKNNmCUlgRtV2s28kck/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/Vqj2w/btqzYah90ny/lUbuKNNmCUlgRtV2s28kck/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/Vqj2w/btqzYah90ny/lUbuKNNmCUlgRtV2s28kck/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;바탕화면의 네이버 폴더를 열어서 저장된 내용을 확인합니다. 컨텐츠와 이미지들이 저장되어 있습니다.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/dxlFxM/btqzYbVE69w/R7XUJJbviq7sQlATswpaFk/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/dxlFxM/btqzYbVE69w/R7XUJJbviq7sQlATswpaFk/img.png&quot; data-origin-height=&quot;541&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/dxlFxM/btqzYbVE69w/R7XUJJbviq7sQlATswpaFk/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;컨텐츠를 열어보면 정리되지 않는 내용들을 확인할 수 있습니다. 네이버 매인 페이지에 있는 내용들을 쉽게 확인할 수 있죠.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/kCTyM/btqzZdkrJ8s/rQ1hTrFsxNF2lg9ZCqoGM1/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/kCTyM/btqzZdkrJ8s/rQ1hTrFsxNF2lg9ZCqoGM1/img.png&quot; data-origin-height=&quot;445&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/kCTyM/btqzZdkrJ8s/rQ1hTrFsxNF2lg9ZCqoGM1/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;이번에는 Html 형태로 저장되는지 확인해볼께요. 우측 속성에서 &amp;quot;&lt;b&gt;요소 형식&lt;/b&gt;&amp;quot;을 Html로 변경하고 다시 실행하세요. 그전에 네이버 폴더의 내용을 모두 삭제해줍니다. 파일이 겹치지는 않지만, 지금은 테스트라서 쉽게 확인하기 위함입니다.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/b2r7Qg/btqz03HYZYu/KkWZpBurYITmEmwhA8OSTk/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/b2r7Qg/btqz03HYZYu/KkWZpBurYITmEmwhA8OSTk/img.png&quot; data-origin-height=&quot;579&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/b2r7Qg/btqz03HYZYu/KkWZpBurYITmEmwhA8OSTk/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;폴더를 보면 이미지는 동일하게 저장 되었을겁니다. 하지만, 컨텐츠는 html로 만들어진 것을 확인할 수 있죠? 내용을 열어보면 네이버 매인 페이지의 소스를 확인할 수 있습니다. 물론, 네이티브는 아니고 이미 가공된 소스죠.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/uzfoo/btqz04GS8oo/8oI1HrkRkGY0dxeot5fAk1/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/uzfoo/btqz04GS8oo/8oI1HrkRkGY0dxeot5fAk1/img.png&quot; data-origin-height=&quot;445&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/uzfoo/btqz04GS8oo/8oI1HrkRkGY0dxeot5fAk1/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;폴더를 열어보면 아래 그림과 같이 모든 이미지들을 다운로드 받아서 정리되어 있는 것을 알 수 있습니다. 조금만 더 가공해서 결과물을 만들어 낼 수 있으면~ 특정 사이트의 내용을 가져와서 가공 처리 후 다른 사이트에 자동으로 올리는 것도 해볼 수 있을거 같네요.&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/eezbme/btqzYp7fjfE/4coduWgasfykoACXjLYBn0/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/eezbme/btqzYp7fjfE/4coduWgasfykoACXjLYBn0/img.png&quot; data-origin-height=&quot;541&quot; data-origin-width=&quot;740&quot; src=&quot;https://k.kakaocdn.net/dn/eezbme/btqzYp7fjfE/4coduWgasfykoACXjLYBn0/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;웹 크롤링 또는 스크래이퍼 관련 데이타 수집 및 자동화 솔루션은 많이 있습니다. 네이버나 특정 사이트에서 이메일, 주소, 전화번호 3개 수집하는데 80~100만원 정도 비용이 들죠. 간단하게 스크랩한 후 로컬에서 데이타 검색 후 수집해도 됩니다. 만들기 나름이겠지만~ 키워드도 몇개 더 매칭해서 검색 후 사이트 스크랩하면 좀 더 효과적인 홍보가 되지 않을까 생각되네요^^&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&amp;nbsp;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;속성 정보&lt;/b&gt;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/bkQTtB/btqz04mz7gy/oEfBFFzL0ei9Ux8iHsqNc1/img.png&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/bkQTtB/btqz04mz7gy/oEfBFFzL0ei9Ux8iHsqNc1/img.png&quot; data-origin-height=&quot;555&quot; data-origin-width=&quot;200&quot; src=&quot;https://k.kakaocdn.net/dn/bkQTtB/btqz04mz7gy/oEfBFFzL0ei9Ux8iHsqNc1/img.png&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;b&gt;기본 작업&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;사용 여부: 이 액션의 사용 여부를 설정합니다. False로 설정하면 이 액션은 실행되지 않습니다.&lt;/li&gt; &lt;li&gt;설명: 이 액션의 부가적인 설명을 입력합니다.&lt;/li&gt; &lt;li&gt;실행 전 지연: 이 액션이 실행되기 전 지연 시간을 입력합니다.&lt;/li&gt; &lt;li&gt;실행 후 지연: 이 액션이 실행된 후 지연 시간을 입력합니다.&lt;/li&gt; &lt;li&gt;아이디: 스크립트 내에서 유니크한 아이디를 입력합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;변수&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;가져오기: 글로벌 또는 로컬 변수에 저장되어 있는 값을 이 액션의 속성 값으로 가져옵니다.&lt;/li&gt; &lt;li&gt;추가하기: 이 액션의 속성 값을 글로벌 또는 로컬 변수에 저장합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;작업&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;스크랩 옵션: 기본 값은 All입니다. Contents는 내용만 스크랩하며, Files는 첨부된 파일이나 이미지만 스크랩합니다.&lt;/li&gt; &lt;li&gt;요소 이름: DOM에서 찾을 엘리먼트의 이름입니다.&lt;/li&gt; &lt;li&gt;요소 형식: DOM에서 찾을 엘리먼트의 형식입니다.&lt;/li&gt; &lt;li&gt;웹사이트 주소: 스크랩 할 사이트의 주소를 입력하세요.&lt;/li&gt; &lt;li&gt;인코딩: 웹 사이트의 인코딩을 선택합니다. 스크랩한 내용에서 한글이 깨지거나 알 수 없는 문자로 표시되면 이 값을 Default로 선택하세요.&lt;/li&gt; &lt;li&gt;저장 위치: 스크랩한 데이타를 저장할 로컬 컴퓨터의 폴더를 선택하세요.&lt;/li&gt; &lt;li&gt;컨텐츠 처리 옵션: 스크랩한 내용을 어떤 방식으로 처리할지 선택할 수 있습니다. Text와 Html이 있습니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;개발자에게 후원하기&lt;/b&gt;&lt;/p&gt; &lt;figure data-ke-style=&quot;alignCenter&quot; data-ke-type=&quot;image&quot;&gt;&lt;img data-image-src=&quot;https://k.kakaocdn.net/dn/GFVqw/btqzYpGdf2c/3OWx7uDMb4F31LgElYE1Dk/img.jpg&quot; data-mce-src=&quot;https://k.kakaocdn.net/dn/GFVqw/btqzYpGdf2c/3OWx7uDMb4F31LgElYE1Dk/img.jpg&quot; data-origin-height=&quot;100&quot; data-origin-width=&quot;365&quot; src=&quot;https://k.kakaocdn.net/dn/GFVqw/btqzYpGdf2c/3OWx7uDMb4F31LgElYE1Dk/img.jpg&quot; /&gt;&lt;/figure&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;추천, 구독, 홍보&lt;/b&gt;&amp;nbsp;꼭~ 부탁드립니다.&lt;/p&gt; &lt;p&gt;여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~&lt;/p&gt; &lt;p&gt;감사합니다~&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>소심비형</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/808373</guid>
	<comments>https://autolabs.co.kr/board_Goon42/808373#comment</comments>			<pubDate>Mon, 25 Nov 2019 09:20:20 +0900</pubDate>
		</item><item>
			<title>외부 API - 웹 API - 웹 크롤러 (External API, Web API, Web Crawler)</title>
			<link>https://autolabs.co.kr/board_Goon42/777413</link>
				<description>&lt;p&gt;안녕하세요. 소심비형입니다. 웹 API의 마지막 기능인 웹 크롤러입니다. 아마도~ 가장 기대하고 기다렸던 기능이 아닐까 생각되는데요. 어쩌면 아닐수도 있구요^^; 기존 NGM 3.0에서는 웹 크롤러 기능이 분리되어 있었습니다. 그래서 사용법도 달랐었죠. 일관성이 없었기도 하구요.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;웹 크롤러를 사용하면 API를 제공하지 않는 사이트의 정보를 쉽게 가져올 수 있습니다. NGM의 웹 크롤러를 웹드라이브와 연동해서 사용하면 특정 노드의 정보들만 정제해서 처리할 수 있습니다. 웹드라이브는 기본 제공하고 있으니 크게 어려운 부분은 없을거예요. 웹 API를 이용하는 서비스가 웹드라이브거든요. 지금까지 배운 것들입니다^^&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;우선 간단한 테스트를 위해 아래와 같이 새로운 스크립트를 추가합니다.&lt;/p&gt; &lt;p&gt;&lt;b&gt;File &amp;gt; 새로 만들기 &amp;gt; 스크립트 (단축키: Ctrl+N)&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;다운로드.png&quot; src=&quot;https://autolabs.co.kr/./files/attach/images/827120/413/777/62c0e1d61528400996b5cbbf227dddf6.png&quot; /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;마지막 내용이기도하고 어떻게 내가 원하는 정보를 가져오는지에 대해서 설명하려면 동영상으로 만드는게 좋을거 같네요. 여러가지 예제를 해보면서 말이죠~ 그래서 아래 동영상을 참고해서 따라해보면 좀 더 빠르게 숙달될거라 생각합니다. 물론, 내가 원하는 정보를 가져올 수 있는지는 테스트를 해봐야 합니다.&lt;/p&gt; &lt;p&gt;&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;407px&quot; scrolling=&quot;no&quot; src=&quot;https://www.youtube.com/embed/R8fFABiTIxo?wmode=opaque&quot; width=&quot;720px&quot;&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;속성 정보&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;이미지_10.png&quot; src=&quot;https://autolabs.co.kr/./files/attach/images/827120/413/777/7834a87f5c7917adaf3ac1aec63be8a7.png&quot; /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;b&gt;기본 작업&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;사용 여부: 이 액션의 사용 여부를 설정합니다. False로 설정하면 이 액션은 실행되지 않습니다.&lt;/li&gt; &lt;li&gt;설명: 이 액션의 부가적인 설명을 입력합니다.&lt;/li&gt; &lt;li&gt;실행 전 지연: 이 액션이 실행되기 전 지연 시간을 입력합니다.&lt;/li&gt; &lt;li&gt;실행 후 지연: 이 액션이 실행된 후 지연 시간을 입력합니다.&lt;/li&gt; &lt;li&gt;아이디: 스크립트 내에서 유니크한 아이디를 입력합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;데이터&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;HTML 소스: 웹 크롤링으로 가져온 데이터를 표시합니다.&lt;/li&gt; &lt;li&gt;웹브라우저 제목: 웹브라우저의 제목입니다. 보통 사이트를 이동하면 주소가 바뀌기 때문에 이 값을 이용해서 변수로 스위치해야 합니다.&lt;/li&gt; &lt;li&gt;윈도우 핸들 목록: 웹브라우저를 비롯한 탭, 창들의 핸들 목록을 표시합니다.&lt;/li&gt; &lt;li&gt;현재 윈도우 핸들:&amp;nbsp; 현재 웹브라우저에서 선택된 창의 핸들을 표시합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;변수&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;가져오기: 글로벌 또는 로컬 변수에 저장되어 있는 값을 이 액션의 속성 값으로 가져옵니다.&lt;/li&gt; &lt;li&gt;추가하기: 이 액션의 속성 값을 글로벌 또는 로컬 변수에 저장합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;작업&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;IFrame 사용: IFrame 사용 여부를 선택합니다. 내부의 IFrame으로 이동합니다.&lt;/li&gt; &lt;li&gt;URL: 인스턴트 모드를 사용할 경우 이 값은 필수 값입니다. 연결과 무관하게 독립적으로 실행되며, 요소 이름 및 형식등등... 기능을 이용할 수 없습니다.&lt;/li&gt; &lt;li&gt;요소 이름: DOM에서 찾을 엘리먼트의 이름입니다.&lt;/li&gt; &lt;li&gt;요소 형식: DOM에서 찾을 엘리먼트의 형식입니다.&lt;/li&gt; &lt;li&gt;웹브라우저 이름: 제어하기 위해 연결한 웹브라우저의 고유한 이름입니다.&lt;/li&gt; &lt;li&gt;인스턴트 모드: 인스턴트 모드로 설정하면 웹드라이브 연결 없이 바로 웹사이트의 HTML을 가져올 수 있습니다. 대신 탐색은 불가능합니다.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;추천, 구독, 홍보&lt;/b&gt;&amp;nbsp;꼭~ 부탁드립니다.&lt;/p&gt; &lt;p&gt;여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~&lt;/p&gt; &lt;p&gt;감사합니다~&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>소심비형</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/777413</guid>
	<comments>https://autolabs.co.kr/board_Goon42/777413#comment</comments>			<pubDate>Mon, 01 Jul 2019 20:08:35 +0900</pubDate>
		</item><item>
			<title>반다O몰 클럽G 상품 자동으로 긁어오기+실시간 알림 5탄</title>
			<link>https://autolabs.co.kr/board_Goon42/407938</link>
				<description>&lt;p&gt;벌써 5탄까지왔네요...&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;그냥 일일이 사이트 감시하기 귀찮아서 시작한 일이긴한데..&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;일이 너무 커진....ㅎ&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;그냥 이런것도 있구나 라고 봐주시면 감사하겠습니다 ㅎ&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;이번편은 완성 직전단계 까지 진행해서 전체적인 흐름을 한번 공개해볼까 합니다 ㅎ&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;좀 많이 복잡하니....눈이 어지러우실겁니다. 번호만 잘 따라가시면 아~~~~하고 이해잘 되실겁니다 ㅎ&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p style=&quot;text-align:center;&quot;&gt;&lt;img alt=&quot;캡처.PNG&quot; height=&quot;570&quot; src=&quot;https://autolabs.co.kr/files/attach/images/342537/938/407/ef008245c56adc164f0d74de43fe4251.PNG&quot; width=&quot;760&quot; /&gt;&lt;/p&gt; &lt;p style=&quot;text-align:center;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:center;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;일단은 cron사이트를 이용해서 주기적으로 웹파싱 모듈을 돌려놨습니다.(하루에 두번 작동합니다. 자정과 점심시간에...)&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;푸쉬알람과 링크이동하여 상품을 보는것까지 잘됩니다...ㅎ&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;남은과제가 얼마나 잦은 주기로 알람을 해줄수 있느냐인데...&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;제일 이상적인건..상품이 뜨자마자 사용자에게 푸쉬알람으로 알려주는게 좋은데......&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;남들보다 한발 더 먼저 한정판에 대한 정보를 얻을 수 있는거죵...ㅎ&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;최대목표가 새 상품이 올라오면 2분안에 알려주는걸 목표로 한번 연구 좀 해봐야겠습니다..ㅎ&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;ps. 파싱주기에 대해서 자문을 해주실분을 찾습니다! 쪽지한통 주십시요!&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;&lt;span style=&quot;line-height:1.5;&quot;&gt; 사례는 음....뭘로해드릴까요?&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt; &lt;/p&gt; &lt;hr /&gt;&lt;p style=&quot;text-align:left;&quot;&gt;&lt;span style=&quot;line-height:1.5;&quot;&gt;2016.07.03 추가&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;text-align:left;&quot;&gt;&lt;span style=&quot;line-height:1.5;&quot;&gt;이렇게 해서 만들어진 서비스가 PushG입니다.&lt;/span&gt;&lt;/p&gt; &lt;center&gt;&lt;a href=&quot;http://pushg.weblab.pe.kr/&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://aris1215.cdn2.cafe24.com/autolab/img/PushG logo.png&quot; alt=&quot;PushG logo.png&quot; /&gt;&lt;/a&gt;&lt;/center&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/407938</guid>
	<comments>https://autolabs.co.kr/board_Goon42/407938#comment</comments>			<pubDate>Thu, 12 Nov 2015 19:27:17 +0900</pubDate>
		</item><item>
			<title>반다O몰 클럽G 상품 자동으로 긁어오기+실시간 알림 4탄</title>
			<link>https://autolabs.co.kr/board_Goon42/386926</link>
				<description>&lt;p&gt;클럽G에서 상품제목과 상품링크를 긁어왔다고 가정하고, 제로보드XE 게시판에 글을 자동으로 작성하고,&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;푸시불렛에 게시판에 작성된 제목과, 글주소를 메세지로 보내는 부분을 설명드릴까합니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;(클럽G의 정보를 바로 메세지로 보내도 되지만, 연구소 글을 메세지로 보내는 이유는 사이트의 트래픽 유입을 위해서입니다.)&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;* 게시판 글 자동작성&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;- 제로보드XE의 경우 BlogAPI라는 기능이 있습니다. 즉, 외부에서 이 모듈을 이용해서 원격으로 글을 쓸수 있게 해주는 api모듈입니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;nbsp;보통 원격발행을 하기 위해서 쓰는데, 이 기능을 활용해서 글을 자동으로 글을 작성할수가 있습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;nbsp;우리가 원하는건 어떤시점에 php파일을 호출해서 글을 쓰면 되는것인데. 그 방법이 xml-rpc라는 프로토콜을 사용하는겁니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;nbsp;구글링을 해보면 xml-rpc 클래스를 쉽게 찾을수 있을겁니다.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;nbsp;이 클래스를 include를 하고 api함수를 이용해서 파라미터에 게시판ID, 제목과 본문을 넣어주시면&lt;span style=&quot;line-height: 1.5;&quot;&gt;&amp;nbsp;글이 원격으로 작성되는걸 확인 하실수 있으실겁니다.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;nbsp;글이 작성이 안된다면. 제로보드xe blogapi 모듈 설정에서 해당 게시판의 설정이 ON되어있는지 확인한번 해주시면 됩니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;* 작성된 게시판 글 제목과 글 (번호)주소를 푸시불렛으로 보내기&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;- 우리의 목적은 작성된 게시판 &lt;strong&gt;글 제목&lt;/strong&gt;과 &lt;strong&gt;글의 (번호)주소&lt;/strong&gt;입니다. 글의 제목은 파싱을 하고 난뒤 가공을 하면서 직접 푸쉬불렛의 파라미터에 넣으면 되지만.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;nbsp;글의 주소는 게시판에 등록이 된후에 알수가 있습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &amp;nbsp;여기서 글이 등록이 된 시점이 언제냐면..&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; xml-rpc 클래스를 이용해서 메세지를 제로보드xe blogapi 모듈로 send를 하게 되면, xe의 blogapi 애드온에서 receive를 하게 됩니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; 해당 모듈의 소스를 열어보면, 글 작성을 시켜주는 부분이 있습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; 그 부분에 보면, document.GetNextSrl 하고 비슷한 함수가 보일겁니다. 이 부분이 글이 등록될 게시글의 주소(번호)를 생성하는 부분입니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; 글번호가 생성된 뒤에 푸시불렛으로 보내는 함수를 넣어주면, 글작성과 동시에 푸시불렛으로 &lt;strong&gt;글 제목&lt;/strong&gt;과 &lt;strong&gt;글의 주소(번호)&lt;/strong&gt;를 보낼수 있습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;이렇게 되면, 푸시메세지를 받은 사용자들은 링크를 타고 해당 홈페이지에 접속이 되겠지요?ㅎ&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/386926</guid>
	<comments>https://autolabs.co.kr/board_Goon42/386926#comment</comments>			<pubDate>Fri, 30 Oct 2015 11:16:20 +0900</pubDate>
		</item><item>
			<title>반다O몰 클럽G 상품 자동으로 긁어오기+실시간 알림 3탄</title>
			<link>https://autolabs.co.kr/board_Goon42/386559</link>
				<description>&lt;p&gt;현재 게시판에 반다O글이 등록이 되면, 프라모델연구소 회원분들의 이메일로 보내는건 테스트완료했습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;오늘 우연히 push bullet라는 어플을 봤는데, php 기반의 api를 지원해줘서...이것도 가능하겠더군요...&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;이번 글은 알림에 대한 내용이 되겠네요...&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;영문으로 쓰기 귀찮아서 푸시불렛이라고 명명하겠습니다 ㅎ&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;푸쉬불렛이란?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;모바일 기기와 웹브라우저에 관계없이 푸쉬 메세지를 통해서 텍스트 메세지나 파일을 주고 받을수 있는 어플(앱)입니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;지원하는 플랫폼도 다양합니다. 그래서 요즘 같은 다양한 플랫폼이 나온 시대에 적합한 어플이기도 하지요..ㅎ&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;이걸 선택하게 된 중요한 이유가 라이브러리 api를 지원해준다는겁니다. 비슷한 서비스로는 카카오 플러스친구라는 기능이 있지만..&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;카카오에서는 유료로 api를 제공하더군요...&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;실시간 알림에 적용할 기능은?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;푸시불렛은 채널이라는 개념이 존재합니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;즉. 트위터처럼 특정 채널을 follow를 하면, 해당 채널에 메세지가 올라오면 내가 follow를 해놓았기 떄문에&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;모바일 기기에서 푸시알람을 받을수 있습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;쉽게 예를 들면, 휴대폰에 푸시불렛 어플을 깔고, 프라모델연구소(#plamodellab)의 채널태그를 검색해서 follow를 해놓으면.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;반다O몰의 클럽G상품이 떳을때 웹파싱을 통하여 프라모델연구소 채널에 상품정보를 자동으로 메세지를 올려주기떄문에&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;사용자는 상품 정보를 바로바로 푸시알람으로 받아볼수 있습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;남들보다 조금은 더 빠르게 상품정보를 확인할수 있다는거죠..ㅎ&amp;nbsp;&lt;span style=&quot;line-height: 1.5;&quot;&gt;(사실 매일매일 들어가서 체크하기 귀찮아서...개인용으로 쓸려구요...)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;&lt;strong&gt;php기반에서 push메세지를 보낼수 있는가?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;api가 범용이다 보니..오토핫키에서도 적용가능하고, java나 php 모두 가능합니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;제가 테스트해본건 php 웹호스팅에 푸시불렛 클래스를 이용해서 장치별로 메세지를 보내고, 내가 만든 채널에 푸쉬메세지를 보내는것까지는&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;테스트 해봤습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;구글링을 해보시면 푸시불렛 클래스가 있긴한데, 거기에 있는 기능만으로는 채널로 푸쉬메세지는 못 보내더군요..클래스를 조금 커스터마이징 해야됩니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;실시간 알림은 이 기능으로 정리가 된듯하고, 핵심인 상품 긁어오기가 남았네요...&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;제가 게을러서...쉬운것부터 하다보니..긁어오는건 뒷전이고..알림부터 알아본...ㅋ&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;다음시간엔 긁어오는 부분에 대해서 올려볼까합니다.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/386559</guid>
	<comments>https://autolabs.co.kr/board_Goon42/386559#comment</comments>			<pubDate>Wed, 28 Oct 2015 11:02:43 +0900</pubDate>
		</item><item>
			<title>반다O몰 클럽G 상품 자동으로 긁어오기+실시간 알림 2탄</title>
			<link>https://autolabs.co.kr/board_Goon42/364505</link>
				<description>&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;반다O몰 클럽G 상품 자동으로 긁어오기+메일 알림 2탄&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;작업해볼 계획은 이렇습니다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;일단 클럽G상품은 건담인포를 통해서만 링크가 공개가 되더군요..&lt;/div&gt;&lt;div&gt;그래서 건담인포에서 공개된 링크를 타고 반몰에 접근을 해야합니다.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;@ [건담인포-해당상품 반다이몰 주소수집]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;1. 모든 목록을 가져온다(게시글 주소 가져오기)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;2. 해당상품 게시글 본문에서 반다이몰 주소 수집&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;@ [반다이몰-제목/본문 수집]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;1. 반다이몰 login(어떤 상품은 로그인을 필요로함)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;2. 위에서 수집한 주소로 이동하여 상품정보 수집&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;@ [프라모델연구소-게시판에 글 작성]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;@ 알리미(??????)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&amp;nbsp;- 이건 아직 고민을 좀 해봐야겠습니다. 제로보드와 호환시킬수 있는모듈이 어떤게 있을지...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&amp;nbsp;- 현재까지는 XePushApp or Email 방식&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/364505</guid>
	<comments>https://autolabs.co.kr/board_Goon42/364505#comment</comments>			<pubDate>Mon, 14 Sep 2015 11:07:48 +0900</pubDate>
		</item><item>
			<title>반다O몰 클럽G 상품 자동으로 긁어오기+실시간 알림 1탄</title>
			<link>https://autolabs.co.kr/board_Goon42/359500</link>
				<description>&lt;p style=&quot;font-size: 13px;&quot;&gt;요즘 제가 프라모델에 관심이 많이 생겨.. 한번 재밌는걸 해볼려고 합니다.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;프라모델의 세계에는 한정판이라는 개념이 있는데요.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;이게 일반판에 비해 구하기가 조금 힘들어 희소가치가 높습니다.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;이 한정판들은 예약판매 제도로 이루어지는데요.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;불시에 갑자기 홈페이지에 떳다가 품절됩니다.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;또한 품절이 되고 나면 가격정보도 없어집니다.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;그래서 예약구매시의 금액과 시간이 흘러 거래할 시 시세차이가 얼마나 나는지 파악할수가 없는것 같습니다.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;물론 엔화로 얼마인지 나오긴 하는데, 엔화가치에 따라 한화가치도 바뀌기 때문에 정확한 금액을 알수가 없습니다.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;그래서 오토연구소에서 다루는 기술중 웹파싱이라는걸 이용해서, 실시간으로 클럽G상품이 떳을시 제가 운영중인&amp;nbsp;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;프라모델 연구소(&lt;a href=&quot;http://model.weblab.pe.kr/&quot; target=&quot;_blank&quot;&gt;http://model.weblab.pe.kr/&lt;/a&gt;)의 &quot;클럽G&quot; 게시판에 데이터를 누적시켜볼려고 합니다.&amp;nbsp;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;또한 어떤 상품이 한정판 예약구매가 시작되었는지 어플이나, 메일로 알려준다면 금상첨화겠죠?ㅎ&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;물론 구매할지는 사용자가 판단할 몫이기 때문에....알려주는것만으로도 많은 도움이 될듯합니다.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;반다이몰 클럽G 상품 자동으로 긁어오기+알리미 시리즈로 연구소에서 조금씩 다루어 볼까합니다.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;개인적으로 한정판들이 올라오면 확인하고, 또한 거래되는 시세를 파악하기 위함입니다.&lt;/p&gt; &lt;p style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/359500</guid>
	<comments>https://autolabs.co.kr/board_Goon42/359500#comment</comments>			<pubDate>Sat, 12 Sep 2015 11:46:24 +0900</pubDate>
		</item><item>
			<title>최신버전 제로보드XE BlogApi 문제</title>
			<link>https://autolabs.co.kr/board_Goon42/349776</link>
				<description>&lt;p&gt;xmlrpc api 를 이용하여 제가 원하는 게시물 데이터를 &amp;nbsp;특정 게시판에 자동으로 등록해주는걸 성공했습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;제로보드 BlogApi 설정부분에서 생각보다 시간이 좀 걸려버렸네요...&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;항상 최신버전 모듈이 좋다고는 할수 없다라는걸 꺠달았습니다 ㅎ&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;작업내용은 시간나는대로 정리해서 올리겠습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;관심있으신분들이 얼마나 되실질 모르겠지만.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;해당 기술이 웹 자동화쪽으로는 많이 유용할거라 판단되어 올려봅니다.&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/349776</guid>
	<comments>https://autolabs.co.kr/board_Goon42/349776#comment</comments>			<pubDate>Thu, 14 May 2015 11:53:07 +0900</pubDate>
		</item><item>
			<title>스누피 클래스와 xmlrpc를 이용한 제로보드XE 글쓰기</title>
			<link>https://autolabs.co.kr/board_Goon42/349712</link>
				<description>&lt;p&gt;스누피 클래스를 이용해서 제로보드XE에 글을 써볼려고 합니다 ㅎ&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;스누피클래스로 파싱해서 데이터는 긁어왔는데.. 제로보드XE에 글쓰는게 문제네요 ㅎ&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;그누보드 같은경우엔 DB 게시판 테이블에 직접 접근해서 글을 입력 시켰었는데..&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;제로보드XE는 직접 입력시키기보다는 BlogApi를 이용해서 넣어야지 안정적으로 입력이 된다네요..&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;BlogApi를 이용한 글쓰기를 보다보니, xmlrpc라는 기술이 나옵니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;일단 xmlrpc라는걸 공부해봐야겠습니다. ㅎ&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;단순히 오토마우스나 키보드 형식으로 할려고 하니 일일이 수동으로 환경을 셋팅해주고..등등&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;여러가지 불편한 점이 많네요...&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>오토소장</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/349712</guid>
	<comments>https://autolabs.co.kr/board_Goon42/349712#comment</comments>			<pubDate>Wed, 13 May 2015 15:37:37 +0900</pubDate>
		</item><item>
			<title>[파싱응용] 자동로그인 스크립트</title>
			<link>https://autolabs.co.kr/board_Goon42/346787</link>
				<description>&lt;p&gt;다른분들은 파싱에 관심이 없으신건가요.... 흠....&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;파싱 왜 php 로만 구현한것이죠 ??&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height:1.5;&quot;&gt;저는 파싱을 오토핫키로 합니다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;자바스크립트도 모두 사용할수있습니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;해서 특정 사이트의 자동 로그인을 올려드립니다.&lt;/p&gt; &lt;p&gt;이걸 보고 많은분들이 자동로그인등을 배울수있었으면하는 바람입니다.&lt;/p&gt; &lt;p&gt;{ 실력은 미천합니다. / 난이도는 하 입니다.} - 제가 생각하는 기준입니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;아래 소스는 제가 실제로 사용하는 소스중 하나입니다. &lt;/p&gt; &lt;p&gt;대부분의 게임에 적용 가능합니다.&lt;/p&gt; &lt;p&gt;게임 시작과 로그인은 다르게 방법도 많이 있습니다.&lt;/p&gt; &lt;p&gt;하지만 사람이 할때와 가장 비슷하면서 속도가 빠른것중 하나가 아래 소스입니다.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;또한 게임봇을 제작하다보면 특히 필요한 부분중 하나가 로그인 입니다..... 자동로그인 필요하신분은 가져다 사용하세요..&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;login:&lt;/p&gt; &lt;p&gt;Gui, Submit, Nohide ;설정 GUI가 따로있기때문에 아이디 비번의 GUI에 입력된 데이터를 읽어올때 사용합니다.&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height:1.5;&quot;&gt;;id := &quot;아이디&quot;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;;ps := &quot;비밀번호&quot;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height:1.5;&quot;&gt;LoginUrl=http://hounds.netmarble.net&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;pwb := ComObjCreate(&quot;InternetExplorer.Application&quot;)&lt;/p&gt; &lt;p&gt;pwb.Visible := false ;True ;트루로 변경하시면 홈페이지가 보입니다. (기본적으로 홈페이지가 없이 로그인합니다. 바로 런처가 실행되죠..)&lt;/p&gt; &lt;p&gt;pwb.Navigate(LoginUrl)&lt;/p&gt; &lt;p&gt;While pwb.readyState != 4 || pwb.document.readyState != &quot;complete&quot; || pwb.busy&lt;/p&gt; &lt;p&gt;sleep 1000&lt;/p&gt; &lt;p&gt;pwb.document.getElementById(&quot;login_id&quot;).value := ID&lt;/p&gt; &lt;p&gt;pwb.document.getElementById(&quot;login_pwd&quot;).value := PS&lt;/p&gt; &lt;p&gt;pwb.document.getElementById(&quot;_clf_submit_button&quot;).click()&lt;/p&gt; &lt;p&gt;While pwb.readyState != 4 || pwb.document.readyState != &quot;complete&quot; || pwb.busy&lt;/p&gt; &lt;p&gt;sleep, 1000&lt;/p&gt; &lt;p&gt;A = 80&lt;/p&gt; &lt;p&gt;loop, 30 ; 게임시작 버튼의 이미지는 ID를 가지고있지 않기때문에 그 A 그다음 위치인 게임 다운로드 텍스트를 인식하여 게임시작 버튼의 위치를 특정합니다.&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;A := A + 1&lt;/p&gt; &lt;p&gt;msg := pwb.document.getElementsByTagName(&quot;A&quot;)[A].InnerText&lt;/p&gt; &lt;p&gt;;msgbox, % msg&lt;/p&gt; &lt;p&gt;if ( msg = &quot;게임 다운로드&quot;)&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;break&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;sleep, 100&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;A := A - 1&lt;/p&gt; &lt;p&gt;pwb.document.getElementsByTagName(&quot;a&quot;)[A].click()&lt;/p&gt; &lt;p&gt;;msgbox, 게임시작&lt;/p&gt; &lt;p&gt;sleep, 1000&lt;/p&gt; &lt;p&gt;pwb.quit()&lt;/p&gt; &lt;p&gt;sleep, 5000&lt;/p&gt; &lt;p&gt;winmove,Hounds,,0,0&lt;/p&gt; &lt;p&gt;Loop&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;WinGetText, Textvar, ahk_exe HoundsLauncher.exe ; wingettext를 이용해서 게임 런처의 업데이트 완료를 감지합니다. 다른 대부분의 게임에서도 사용가능합니다.&lt;/p&gt; &lt;p&gt;sleep, 1000&lt;/p&gt; &lt;p&gt;ifinstring,Textvar,완료&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;;msgbox, 시작합니다.&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;sleep, 1000&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;mouseclick,left,687,515&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;sleep, 3000&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;break&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;sleep, 1000&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;sleep, 1000&lt;/p&gt; &lt;p&gt;gosub, Active ; Active 는 제가 창을 기다릴때 사용하는녀석입니다. ^^;;&lt;/p&gt; &lt;p&gt;&lt;span style=&quot;line-height:1.5;&quot;&gt;winmove,Hounds,,0,0&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;return&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Active:&lt;/p&gt; &lt;p&gt;WinWait, Hounds, &lt;/p&gt; &lt;p&gt;IfWinNotActive, Hounds, , WinActivate, Hounds, &lt;/p&gt; &lt;p&gt;WinWaitActive, Hounds,&lt;/p&gt; &lt;p&gt;return&lt;/p&gt;</description>
		<category>웹 자동화</category>	<category>팁/강의</category>				<dc:creator>포스몬</dc:creator>
			<guid isPermaLink="true">https://autolabs.co.kr/board_Goon42/346787</guid>
	<comments>https://autolabs.co.kr/board_Goon42/346787#comment</comments>			<pubDate>Tue, 07 Apr 2015 22:05:52 +0900</pubDate>
		</item>	</channel>
</rss>
