이것이 내가 해야 할 일인가? 어떤 플랫폼이 가장 적합한지 궁금합니다. 이해하기 쉽고 코딩하기 쉽습니다. 아마도 내 기술 수준을 훨씬 넘어서기 때문에 아웃소싱해야 할 것입니다.
일부 배경:
나는 내 도서관을 통해 일부 정보 데이터베이스와 웹사이트에 접근할 수 있습니다. 먼저 도서관 웹페이지를 로딩하여 데이터베이스와 웹사이트에 접속하세요. 대화 상자에 내 도서관 카드 번호를 입력하고 "제출" 링크를 클릭하세요. 그런 다음 데이터를 가져오려는 서비스의 인증된(쿠키 등을 통해 가정) 웹페이지를 엽니다.
내가 달성하고 싶은 것:
폴더에 적절한 이름의 PDF 파일 모음을 만들고 싶습니다. 또는 색인 페이지에서 하이퍼링크로 연결된 모든 저장된 페이지를 포함하는 PDF 파일을 하나의 PDF 파일로 만드는 것이 더 좋습니다.
이 페이지는 여러 웹사이트에서 왔습니다. 이러한 사이트에 대한 액세스는 무료이거나 비밀번호 또는 라이브러리 기반 액세스가 필요합니다(내가 아는 한 화면 기반 상호 작용이 필요함).
또한 라이브러리 기반 액세스를 통해 액세스할 수 있는 이러한 사이트 중 하나에서는 다른 페이지로 이동할 때마다 주소 표시줄의 웹 주소가 변경되지 않습니다(안타깝습니다). 따라서 오프라인으로 보기 위해 다운로드하려는 페이지 중 상당수는 간단한 Wget 유형 명령과 함께 사용하기에 적합하지 않습니다. 내가 이해한 바로는, 페이지가 로드되도록 하려면 웹사이트에서 올바른 탭을 클릭하는 방법이 필요하며, 페이지가 로드되면 적절한 이름을 가진 PDF 파일로 인쇄하고 하나의 PDF 파일로 컴파일해야 합니다.
이 미니 앱/스크립트를 개발하는 데 어떤 플랫폼을 사용해야 할지 궁금하십니까?
이러한 유형의 애플리케이션에 가장 적합한 플랫폼을 결정하는 데 누군가 도움을 줄 수 있습니까? 이상적으로는 함수 호출 지향 솔루션을 원합니다. 그러면 개발 한 달 후에 웹 페이지를 추가해야 하는 경우 개발자에게 "구성" 변경을 요청할 필요가 없습니다.
플랫폼이 반드시 Unix일 필요는 없지만 Unix 플랫폼을 사용하면 유연성이 극대화된다고 생각합니다. Mac, 온라인 호스팅 또는 Raspberry Pi에서 실행할 수 있습니다 :)
감사합니다! !
고쳐 쓰다:
방금 IT를 아는 친구가 하는 말을 들었습니다. http://seleniumhq.org/또는 http://scrapy.org/좋은 선택이 될 수도 있습니다. 그들도 연구할 것이다.
답변1
글쎄, 나는 scrapy에 대한 링크를 받은 후 몇 가지 조사를 했고 내가 웹 스크래퍼에 대해 이야기하고 있다는 것을 깨달았습니다. 걱정하시는 분들을 위해 제가 수집한 몇 가지 정보를 알려드립니다.
아직 어떻게 앞으로 나아갈지는 확신할 수 없지만 BeautifulSoup과 Mechanize가 앞으로 나아가는 가장 쉬운 방법인 것 같습니다. 능직은 단순함으로 인해 꽤 좋아 보입니다. 어떤 아이디어가 있나요?
내 연구 링크 모음
Python 웹 스크래핑 도구 개요 시연 http://www.slideshare.net/maikroeder/overview-of-python-web-scraping-tools
기계화 http://wwwsearch.sourceforge.net/mechanize/
메일리 탕: 그가 우리를 가르쳤기 때문에 우리는 그를 거북이라고 부릅니다. http://www.crummy.com/software/BeautifulSoup/
twill: 웹 브라우징을 위한 간단한 스크립트 언어 http://twill.idyll.org/
Selenium - 웹 브라우저 자동화 http://seleniumhq.org/
PhantomJS: JavaScript API를 사용하는 헤드리스 WebKit http://phantomjs.org/
Mechanical은 제가 가장 좋아하는 강력한 고급 검색 기능입니다(매우 쉬운 양식 작성 및 제출).
Twill은 Mechanize를 기반으로 구축된 간단한 스크립팅 언어입니다.
BeautifulSoup + urllib2도 잘 작동합니다.
Scrapy는 매우 유망한 프로젝트처럼 보입니다.
제가 사용할 수 있는 Python 기반 웹 크롤러를 아는 사람이 있나요? - 스택 오버플로 https://stackoverflow.com/questions/419235/anyone-know-of-a-good-python-based-web-crawler-that-i-could-use
PycURL 홈페이지 http://pycurl.sourceforge.net/
Scrapy 평가 - BeautifulSoup + Mechanize 동시성을 얻기 위해 Evenlets를 사용하는 것이 더 간단할 것 같습니다(제 의견은 여기에서 나왔습니다).
Scrapy는 배울 가치가 있나요? - 스택 오버플로 https://stackoverflow.com/questions/6283271/is-it-worth-learning-scrapy
데이터 개선, 재사용 및 요청 Scraper Wiki | https://scraperwiki.com/
답변2
나는 항상 사용경량 수압(libwww-perl) 또는웹사이트: 기계화이와 같은 작업에는 Python을 사용하는 여러 프로그래밍 작업이 있지만 텍스트 처리와 관련된 모든 작업에는 Perl을 사용하는 것을 선호합니다.
아마도 제가 작성한 것 중 가장 복잡한 것은 몇 년 전 제 파트너와 제가 작은 서점을 소유했을 때였습니다. 그녀는 서점 웹사이트에서 책에 대한 정보(ISBN 또는 바코드 입력)를 추출하고 관련 정보를 입력하는 프로그램이 필요했습니다. 세부 정보는 그녀의 (postgresql) 재고 데이터베이스에 삽입됩니다.
웹 크롤러를 작성하는 것은 지루하고 시간이 많이 걸릴 수 있습니다. 다양한 웹 페이지의 HTML 소스 코드를 읽고 찾고 있는 정보를 식별하고 추출하는 방법을 알아내는 데 많은 시간을 소비합니다.
특별히 어렵지는 않지만 HTML에 대한 충분한 지식과 최소한 중급 프로그래밍 기술이 필요합니다.
모든 작업을 수행하는 하나의 크롤러가 아닌 각 데이터베이스 사이트에 대해 서로 다른 크롤러를 작성해야 할 수도 있습니다. 하지만 이를 함수로 포함하는 래퍼 스크립트를 작성하거나 사이트에 따라 별도의 스크립트를 호출할 수도 있습니다.
홈페이지도 변경됩니다. 6~12개월 동안 잘 작동하던 크롤러는 사이트가 재설계되어 더 이상 스크립트가 의도한 대로 작동하지 않기 때문에 갑자기 작동을 멈출 수 있습니다.
따라서 데이터베이스에 프로그래밍 방식의 액세스를 위한 일종의 API가 있는 경우(예:나머지또는비누심지어RSS) 그런 다음 HTML을 잡는 대신 사용하십시오. 불행하게도 도서관을 통해 제공되는 데이터베이스 유형에서는 이러한 일이 발생할 가능성이 없습니다(데이터베이스 소유자는 데이터에 대해 사이버 이전의 태도를 갖는 경향이 있으며 무엇보다 액세스를 제어하고 제한하는 데 더 관심이 있습니다). 이들은 누구나 브라우저 대신 프로그램을 통해 자신의 데이터에 쉽게 접근할 수 있는 것을 원하지 않으며 일부는 사이트를 난독화하여 HTML 코드를 이해하기 어렵게 만들거나 링크를 추출하기 위해 JavaScript 해석기가 필요하도록 많은 노력을 기울입니다. 다른 데이터.
이에 대한 좋은 예는 TV 목록 사이트입니다. 이러한 사이트 중 일부는 사람들이 자신의 데이터를 사용하여 MythTV와 같은 프로그램의 녹화 일정을 자동화하는 것을 원하지 않으므로 사이트 개발자와 사이트 스크래퍼 사이에 지속적인 전투가 있습니다. Technology Wars의 저자.
Perl에는 자바스크립트 해석기가 있습니다(WWW::Mechanize와 함께 사용하기 위한 해석기 포함).WWW::각본가그러나 때로는 웹사이트의 자바스크립트 코드를 직접 검사하고 HTML 난독화에서 무엇을 하는지 파악한 다음 js 인터프리터 없이 데이터 난독화를 해제하는 Perl 코드를 작성하는 것이 더 쉽습니다.