나는 피싱 및 페이크 Facebook 계정을 취급하는 회사에서 일하고있다. 나는 "사명"에 헌신하고 싶다. 페이스 북 페이지를 삭제 한 시점에 대해서는 수동적으로 모니터링 할 수 없습니다. 나는 웹 크롤러를 생각하고있다.하지만 페이스 북 페이지가 여전히 활성화되어 있는지 여부를 확인하기 위해 상수를 확인하는 특정 링크를 디자인하는 방법에 대해서는 궁금하다. 나는 이것이 의미가 있기를 바란다.웹 크롤러는 생각하지만 시작하는 방법은 무엇입니까?
답변
예! 크롤링을 사용할 수 있습니다. 그러나 가능한 한 빨리 원하면 크롤링이 가장 좋은 방법은 아닐 수도 있습니다. 관심이 있으시면 HTTPConnection을 사용하여이 작업을 수행하는 방법입니다. 또한 불행하게도 링크는 이고 완전히이 깨졌습니다. 이 반환하는 경우
당신이 다음 자세한 정보가 필요하면 당신은 가장 가능성, 링크가 깨진 경우 (따라서는에 아무 연결하지하는 의미)를 확인하기 위해 API 또는 웹 크롤러를 사용하는
from http.client import HTTPConnection # Importing HTTPConnection from http.client.
conn = HTTPConnection('www.google.com') # Connecting to 'google.com'
conn.request('HEAD', '/index.html') # Request data.
res = conn.getresponse() # Now we get the data sent back.
print(res.status, res.reason) # Finally print it.
이있을 것이다 '302 Found'는 활성화 된 웹 페이지 여야합니다. 이 정보가 도움이 되었기를 바랍니다. 이것이 당신이 원하는 것이 아닌지 말해주세요. :)
감사합니다,
~ Coolq
당신은 그것을 응답 상태입니다 의해 계정이 활성화 여부를 알려줄 수있는 HTTP 요청을 보낼 수 있습니다, 파이썬은 몇 가지 표준 라이브러리를 가지고, 당신은 Internet Protocols and Support 살펴있을 수 있습니다 . 는 개인적으로 사용 요청을 추천합니다 :
import requests
response = requests.get("http://facebook.com/account")
if response.status_code == 302: # or 404
# the page is missing
당신이 정말로 속도 나 성능에 대해 관심이 있다면, 당신은 파이썬 (gevent 같은) 다중 또는 비동기 I/O를 사용합니다. 크롤링에 초점이있는 경우
, 당신은 Scrapy에 대한 주요 장점 중 하나 주목 여기 Scrapy
를 살펴있을 수 있습니다 요청은 예정 비동기 적으로 처리 있습니다. 즉, Scrapy가 완료되지 않고 처리 될 때까지 기다리는 데 필요한 이 아니라면 다른 요청을하거나 을 보낼 수 있습니다. 이는 심지어 일부 요청이 실패하거나 처리하는 중에 오류가 발생하더라도 다른 요청이 계속 진행될 수 있다는 것을 의미하는 을 의미합니다.
https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Raghavendran-Balu 내가 크롤러에 대해 읽은 최고의 기사 중 하나입니다.
웹 크롤러는 간단한 페치 - 파스 - 추가 시스템처럼 들릴 수도 있지만 조심해! 당신은 복잡성을 지나치게 보일 것입니다. 구현 세부 사항보다 아키텍처에 더 초점을 맞추면 질문의 의도에서 벗어날 수 있습니다. 웹 규모 크롤러를 빌드하려면 크롤러의 아키텍처가 언어/프레임 워크의 선택보다 더 중요하기 때문에 이것이 필요하다고 생각합니다.
는 아키텍처 :는
최소한의 크롤러는 적어도 이러한 구성 요소를 필요 :
HTTP의 가져 오기를 : 서버에서 웹 페이지를 검색 할 수 있습니다.
추출기 : 앵커 링크와 같은 페이지에서 URL을 추출하기위한 최소 지원.
중복 제거 프로그램 : 실수로 동일한 내용이 두 번 추출되지 않도록하십시오. 이것을 세트 기반 데이터 구조로 간주하십시오.
URL 프론티어 : 페치 및 구문 분석해야하는 URL의 우선 순위를 지정합니다. 우선 순위 큐로 고려하십시오.
Datastore : 검색 페이지와 URL 및 기타 메타 데이터를 저장합니다. 아키텍처에 대해 배울 수있는
좋은 출발점입니다
- Web Crawling
- Crawling the Web
- Mercator: A scalable, extensible Web crawler
- UbiCrawler: a scalable fully distributed web crawler
- IRLbot: Scaling to 6 billion pages and beyond
- (단일 단절 크롤러) 및 MultiCrawler: a pipelined architecture
프로그래밍 언어 : 당신이 편안 좋은 네트워크 라이브러리와 모든 높은 수준의 언어는 괜찮습니다. 저는 개인적으로 Python/Java를 선호합니다. 크롤러 프로젝트가 코드 크기면에서 커질 수 있으므로 디자인 제한 프로그래밍 언어로 개발하면 관리하기가 어려울 수 있습니다. 유닉스 명령과 셸 스크립트만으로 크롤러를 만들 수는 있지만 명백한 이유 때문에 크롤러를 만들지는 않을 것입니다.
프레임 워크/라이브러리 : 많은 프레임 워크가 이미 다른 답변에서 제안되었습니다. 성숙한, 대규모, 구성
Scrapy (파이썬) :
- 너치와 Heritrix (자바) : 기술적으로 스크레이퍼를하지만 크롤러를 구축하는 데 사용할 수 있습니다 여기 요약해야한다.
https://github.com/scrapinghub/distributed-frontera - Scrapy의 URL 프런티어 및 데이터 저장소를 방문하여 대규모 크롤링을 실행할 수 있습니다.
- node.io (자바 스크립트) : Scraper. 당신이 자바 스크립트와 함께 살 준비가되어 있다면, 초기,하지만 고려 가치,. 파이썬
: 파이썬에서 Introduction to web-crawling in Python
코드를 참조하십시오 https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Rishi-Giri-1
제안 확장 성이 분산 크롤링을 위해 :
- 비동기 모델에 대한 이동하는 것이 좋습니다, 주어진를 문제의 본질.
- 예 : 데이터 저장을위한 분산 데이터베이스를 선택하십시오. Hbase.
- redis와 같은 분산 데이터 구조는 URL 경계 및 중복 탐지기에 대해서도 고려할 가치가 있습니다. 자세한 내용을 보려면 다음 사이트를 방문
: https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch
참조 :
- Olston, C., & Najork, M. (2010). 웹 크롤링. 정보 검색의 기초와 동향, 4 (3), 175-246.
Pant, G., Srinivasan, P., & Menczer, F. (2004). 웹 크롤링. Web Dynamics (pp. 153-177). Springer Berlin Heidelberg.
Heydon, A., & Najork, M. (1999). Mercator : 확장 가능하고 확장 가능한 웹 크롤러. World Wide Web, 2 (4), 219-229.
Boldi, P., Codenotti, B., Santini, M., & Vigna, S. (2004). Ubicrawler : 확장 가능한 완전히 분산 된 웹 크롤러입니다. 소프트웨어 : Practice and Experience, 34 (8), 711-726.
Lee, H. T., Leonard, D., Wang, X., & Loguinov, D. (2009). IRLbot : 60 억 페이지 이상으로 확장. 웹상의 ACM 트랜잭션 (TWEB), 3 (3), 8.
Harth, A., Umbrich, J., & Decker, S. (2006). 멀티 크롤러 : 시맨틱 웹 데이터를 크롤링하고 인덱싱하기위한 파이프 라이닝 된 아키텍처입니다. 시맨틱 웹 -ISWC 2006 (pp. 258-271). Springer Berlin Heidelberg.
- 1. 상업용 웹 크롤러는 무엇입니까?
- 2. 웹 크롤러는 사이트 통계에 어떤 영향을 줍니까?
- 3. Node.js를 크롤러는
- 4. 크롤러는 웹 페이지의 텍스트를 어떻게 파싱합니까?
- 5. 크롬을 사용하는 루비 웹 크롤러는 어떻게 작성합니까?
- 6. 웹 브라우저에서 .NET 프로그램을 시작하는 방법은 무엇입니까?
- 7. 웹 플러그인 기반 프로젝트를 시작하는 방법은 무엇입니까?
- 8. 웹 프로젝트의 데이터베이스 디자인을 시작하는 방법은 무엇입니까?
- 9. 자바 웹 서비스를 시작하는 방법은 무엇입니까?
- 10. 다른 도메인에서 웹 서비스를 시작하는 방법은 무엇입니까?
- 11. golang의 브라우저에서 웹 서버를 시작하는 방법은 무엇입니까?
- 12. 웹 모드에서 GWT를 시작하는 방법은 무엇입니까?
- 13. Boxee의 웹 브라우저를 시작하는 방법은 무엇입니까?
- 14. 안드로이드 웹 서버 서비스를 시작하는 방법은 무엇입니까?
- 15. NodeJS 웹 애플리케이션으로 시작하는 방법은 무엇입니까?
- 16. 파이썬 크롤러는 셀레늄과 PhantomJS
- 17. 램프를 시작하는 방법은 무엇입니까?
- 18. 봄 - 웹 응용 프로그램에서 웹 서버를 중지하고 시작하는 방법은 무엇입니까?
- 19. 웹 호스팅 도메인에서 내 웹 페이지를 시작하는 방법은 무엇입니까?
- 20. import.io 크롤러는 robots.txt를 준수합니까?
- 21. Xcode를 시작하는 방법은 무엇입니까?
- 22. NotificationListenerService를 시작하는 방법은 무엇입니까?
- 23. WebRTC를 시작하는 방법은 무엇입니까?
- 24. QT로 시작하는 방법은 무엇입니까?
- 25. ExtJS를 시작하는 방법은 무엇입니까?
- 26. twitCurl을 시작하는 방법은 무엇입니까?
- 27. history.js를 시작하는 방법은 무엇입니까?
- 28. OpenTSDB를 시작하는 방법은 무엇입니까?
- 29. Rspec으로 시작하는 방법은 무엇입니까?
- 30. 플렉스로 시작하는 방법은 무엇입니까?