Python을 사용하여 탐색을 자동화하는 방법은 무엇입니까?[닫은]

StackOverflow https://stackoverflow.com/questions/1292817

  •  18-09-2019
  •  | 
  •  

문제

특정 웹 사이트에서 일련의 절차를 수행해야한다고 가정합니다 예를 들어, 일부 양식을 작성하고, 제출 버튼을 클릭하고, 데이터를 서버로 다시 보내고, 응답을 받고, 응답에 따라 다시 작업을 수행하고 데이터를 웹 사이트 서버로 다시 보냅니다.Python에 웹 브라우저 모듈이 있다는 것을 알고 있지만 웹 브라우저를 호출하지 않고 이 작업을 수행하고 싶습니다.순수한 스크립트여야 합니다.

이를 수행하는 데 도움이 되는 Python 모듈이 있습니까?
감사해요

도움이 되었습니까?

해결책

당신은 또한 살펴볼 수 있습니다 기계화. 처리해야합니다 "진술 프로그램 웹 브라우징" (그들의 사이트에 따라).

다른 팁

Selenium은 원하는 것을 정확하게 수행하고 JavaScript를 처리합니다.

모든 대답은 오래되었고 추천하고 나는 큰 팬입니다. 요청

홈페이지에서 :

Python의 표준 urllib2 모듈은 필요한 대부분의 HTTP 기능을 제공하지만 API는 철저히 깨졌습니다. 그것은 다른 시간과 다른 웹을 위해 만들어졌습니다. 가장 간단한 작업을 수행하려면 엄청난 양의 작업 (메서드 재정의)이 필요합니다.

일이 이런식이되어서는 안됩니다. 파이썬에 있지 않습니다.

최고의 솔루션은 혼합이라고 생각합니다 요청 그리고 BeautifulSoup, 질문을 업데이트하여 업데이트 할 수 있도록 질문을 업데이트하고 싶었습니다.

셀렌 http://www.seleniumhq.org/ 저에게 가장 적합한 솔루션입니다. Python, Java 또는 원하는 프로그래밍 언어로 쉽게 코딩 할 수 있습니다. 프로그램으로 변환하는 쉬운 시뮬레이션.

이에 도움이되는 파이썬 모듈이 많이 있습니다. 예를 들어 urllib 그리고 htmllib.

접근하는 방식을 변경하면 문제가 더 간단합니다. "일부 양식을 채우고, 제출 버튼을 클릭하고, 데이터를 서버로 다시 보내고, 응답을 받는다"고 말합니다. 이는 4 단계 프로세스처럼 들립니다.

실제로, 당신이해야 할 일은 일부 데이터를 웹 서버에 게시하고 응답을 얻는 것입니다.

이것은 간단합니다.

>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()

(urllib 문서에서 가져온 예).

응답으로하는 일은 HTML이 얼마나 복잡한 지, 그리고 당신이하고 싶은 일에 달려 있습니다. 정규 표현식을 사용하여 구문 분석하거나 htmllib.htmlparser 클래스를 사용할 수 있거나 더 높은 수준의 유연한 파서를 사용할 수 있습니다. 아름다운 수프.

셀레늄 2 WebDriver가 포함되어 있습니다 파이썬 바인딩 헤드리스 htmlunit 드라이버를 사용하거나 그래픽 디버깅을 위해 Firefox 또는 Chrome으로 전환 할 수 있습니다.

잊지 마요 ZOPE.TESTBROWSER 래퍼가 있습니다 기계화 .

Zope.testBrowser는 사용하기 쉬운 프로그램 가능한 웹 브라우저를 제공합니다.

내가 찾은 가장 좋은 솔루션 (현재 구현)은 다음과 같습니다 .- 셀레늄 웹 드라이버를 사용하여 파이썬의 스크립트 - Phantomjs 헤드리스 브라우저 (Firefox가 사용되는 경우 GUI가 있고 느리게됩니다).

htmlunit은 Java 개발자 인 경우 패키지입니다.http://htmlunit.sourceforge.net/apidocs/index.html

나는 그것을 발견했다 Imacros Firefox 플러그인 (무료) 아주 잘 작동합니다.

Windows COM 객체 인터페이스를 사용하여 Python으로 자동화 할 수 있습니다. 다음은 예제 코드입니다 http://wiki.imacros.net/python. 필요합니다 파이썬 윈도우 확장:

import win32com.client
def Hello():
    w=win32com.client.Dispatch("imacros")
    w.iimInit("", 1)
    w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
    Hello()

아마 당신은 원할 것입니다 urllib2.HTTPS, 쿠키, 인증 등을 처리할 수 있습니다.당신도 아마 원할 것입니다 아름다운수프 HTML 페이지를 구문 분석하는 데 도움이 됩니다.

이 슬라이드를 살펴볼 수 있습니다. 마지막 이탈리아 Pycon (PDF) : 저자는 파이썬에서 스크래핑 및 자동 브라우징을 수행하기 위해 대부분의 라이브러리를 나열했습니다. 그래서 당신은 그것을 볼 수 있습니다.

난 아주 많이 좋아 능직 코의 저자 중 한 명이 개발 한 (이미 제안 된). 특히 웹 사이트를 테스트하는 것이 목표입니다.

인터넷 익스플로러는 구체적이지만 오히려 좋습니다.

http://pamie.sourceforge.net/

urllib/beautifulSoup과 비교 한 장점은 JavaScript가 IE를 사용하기 때문에 실행한다는 것입니다.

httplib2 + beautifulsoup

Firefox + FireBug + HttpReplay를 사용하여 JavaScript가 웹 사이트에서 브라우저를 오가는 것을 확인하십시오. httplib2를 사용하면 기본적으로 게시물을 통해 동일하게 수행 할 수 있습니다.

자동화를 위해 확실히 체크 아웃하고 싶을 수도 있습니다

웹 보트

셀레늄을 기반으로하며 매개 변수를 기반으로 한 클릭과 같은 동작을 수행 할 요소를 자동으로 찾는 것과 같은 코드가 거의없는 더 많은 기능을 제공합니다.

동적으로 변화하는 클래스 이름과 ID가있는 사이트에서도 작동합니다.

다음은 DOC입니다. https://webbot.readthedocs.io/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top