이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 585936|회답: 70

[콘솔 프로그램] .net/c# 웹 크롤러 최적화의 길

  [링크 복사]
게시됨 2018. 4. 19. 오후 2:21:02 | | | |
0x00

웹 크롤러(웹 스파이더, 웹 봇이라고도 하며, FOAF 커뮤니티에서는 웹 체이서라고 더 흔히 부릅니다)는 특정 규칙에 따라 월드 와이드 웹에 관한 정보를 자동으로 스크래핑하는 프로그램이나 스크립트입니다. 덜 흔히 사용되는 다른 이름으로는 개미, 자동 인덱싱, 시뮬레이터, 벌레 등이 있습니다.

0x01

간단히 말해, 크롤러는 자체 규칙에 따라 데이터를 수집하고, 수집된 데이터를 분석한 뒤 자신에게 유용한 데이터를 얻습니다.

0x02

웹 크롤러 최적화는 두 단계로 나눌 수 있습니다:

1: 데이터 스크래핑 시 최적화;

2: 잡기 결과 처리 최적화;

오늘은 스크래핑 과정에서의 최적화에 대해 이야기하려고 합니다!

0x03

크롤링 과정 최적화에 대해 몇 가지 점을 요약했습니다:

1: 물리적 주소로 최적화할 수 있습니다. 예를 들어, 대상 리소스 서버는 상하이의 텐센트 클라우드 호스트입니다. 우리는 같은 지역 내 서버를 선택하려고 합니다. 즉, 상하이 지역 서버는 선택하지 말고, 같은 IDC 컴퓨터실의 서버를 선택하려고 합니다. 이 리소스 웹사이트가 텐센트 클라우드 서버임을 알고 있으며, 크롤러를 텐센트 클라우드 서버에 올리려고 합니다. 알리바바 클라우드 서버에는 두려고 합니다!

2: 안정적이고 빠른 네트워크를 선택하세요. 일반적으로 크롤러는 네트워크 품질에 높은 요구 조건이 있습니다. 홈 네트워크를 사용하지 않도록 하고, 회사 네트워크를 선택하거나 데이터를 캡처할 서버를 구매하세요.

3: 더 효율적인 크롤러 언어를 선택하세요. 파이썬이 크롤러에 더 뛰어나다고 들었지만 사용해본 적은 없고, 오늘은 주로 .net 언어로 설명할 예정입니다.

0x04

급히 구매하는 경우, 빠른 데이터 획득 요구가 높으며, 시간 문제로 설명할 수 있습니다. 데이터를 조기 확보하고 획득 확률을 높이는 데 도움이 됩니다. 다음은 제가 콘솔로 작성한 데모입니다. 아래 그림과 같이 이 웹사이트의 데이터를 캡처하는 테스트입니다:


(시간이 짧을수록 더 빠릅니다)

위 데이터 순위:1: 네이티브 최적화된 코드, 2: 네이티브 코드, 3: 서드파티 플러그인 DLL(패키지)

0x05

왜 서드파티 플러그인(패키지)이 가장 오래 걸릴까요? 서드파티 플러그인은 실제로 많은 수의 네이티브 코드 캡슐화, 많은 논리적 판단, 그리고 비교적 다재다능하여 느린 크롤링 속도를 초래할 수 있습니다.

다음은 기본 코드입니다:



네이티브 코드는 바로 위 몇 줄에 있습니다.평균 시간은 여전히 184밀리초입니다,코드가 단순할수록 최적화가 더 어렵습니다위 코드를 어떻게 최적화해서 평균 99밀리초 시간을 달성할 수 있다고 생각하시나요?속도 차이가 두 배로 커졌어!

0x06

대상 리소스 서버가 gzip 압축을 지원한다면, 웹사이트에 접속하고 브라우저가 웹사이트를 요청할 때 요청 헤더는 다음과 같은 매개변수를 갖게 됩니다:

응답 헤더 매개변수:






"수락-인코딩" 소개: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding

쉽게 말하자면:

고객은 다음과 같이 말합니다:저는 "gzip, deflate, sdch, br" 압축 알고리즘을 지원하며, 데이터를 반환할 때 원하는 것을 사용할 수 있습니다.

서버가 말했다:저는 gzip 압축 알고리즘을 지원하니, gzip 알고리즘을 사용해 데이터를 압축해 드리겠습니다

고객은 다음과 같이 말합니다:그럼 받은 데이터를 gzip 알고리즘으로 복호화하겠습니다

gzip 알고리즘을 사용하며, 전송된 데이터를 압축하고 전송되는 내용을 크게 줄여 요청 효율이 향상되므로, 최적화된 코드는 다음과 같습니다:


비록 작은 디테일이지만 효율성이 두 배로 늘었다고 할 수 있습니다! 이틀 동안 수집한 데이터와 같고, 이제는 하루 만에 수집할 수 있으며, 이 글은 기어 다니는 것을 배우는 친구들을 위한 것입니다.

참고: gzip 압축 알고리즘은 프로그래밍 언어와는 전혀 관련이 없습니다!

마지막으로 소스 코드를 첨부하세요:

관광객 여러분, 이 게시물의 숨겨진 내용을 보고 싶으시다면 부탁드립니다회답

점수

참가자 수2MB+1 기여하다+2 무너지다 이유
국가 고정 + 1 정말 강력해!
배우는 것을 좋아하는 작은 초보자 + 1 + 1 주인이 좋은 글을 올릴 수 있도록 응원해 주세요. 저도 좋은 글을 올릴게요!

모든 평점 보기





이전의:국제 관행 신참 보고서 발표
다음:.net/c# 차세대 캡차(CAPTCHA) 인식 시스템 2.3 튜토리얼
게시됨 2019. 12. 31. 오전 10:48:25 |
샤오바이는 다칠 수 없었다. 빅데이터를 원클릭으로 수집하는 것과 비슷한 소프트웨어가 있나요?
게시됨 2019. 6. 10. 오후 2:11:09 |
샤오바이는 다칠 수 없었다. 빅데이터를 원클릭으로 수집하는 것과 비슷한 소프트웨어가 있나요?
게시됨 2019. 10. 15. 오전 10:29:57 |
간주팅하오완데 칸
게시됨 2018. 4. 20. 오후 12:35:21 |
공유해 주셔서 감사합니다
게시됨 2018. 4. 25. 오전 11:33:55 |
수집, 아마도 쓸모가 있을 거야.
게시됨 2018. 5. 17. 오후 6:02:21 |
웹 크롤러 최적화 컬렉션으로 가는 길
게시됨 2018. 5. 18. 오후 4:10:57 |
우우우
게시됨 2018. 7. 18. 오후 2:43:07 |
작동하는지 확인해 보세요
게시됨 2018. 7. 20. 오전 10:09:50 |
다다스사드사드
게시됨 2018. 8. 13. 오후 1:06:50 |
이 소스 코드를 확인해 보세요
게시됨 2018. 8. 20. 오후 2:00:52 |

공유해 주셔서 감사합니다
게시됨 2018. 8. 30. 오전 11:42:26 |
srkskrskrskrskrskr
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com