Python 웹 스크랩 핑-양식 기반 웹 사이트
이전 장에서 우리는 동적 웹 사이트를 스크랩하는 것을 보았습니다. 이 장에서는 양식 기반 웹 사이트 인 사용자 기반 입력에 따라 작동하는 웹 사이트 스크랩을 이해하겠습니다.
소개
요즘 WWW (World Wide Web)는 사용자 생성 콘텐츠뿐만 아니라 소셜 미디어로 이동하고 있습니다. 그렇다면 로그인 화면을 넘어서 그런 종류의 정보에 어떻게 접근 할 수 있는가에 대한 의문이 생깁니다. 이를 위해 우리는 양식과 로그인을 처리해야합니다.
이전 장에서는 정보를 요청하기 위해 HTTP GET 메서드를 사용했지만이 장에서는 저장 및 분석을 위해 정보를 웹 서버로 푸시하는 HTTP POST 메서드를 사용합니다.
로그인 양식과 상호 작용
인터넷에서 작업하는 동안 로그인 양식과 여러 번 상호 작용 했어야합니다. 매우 적은 수의 HTML 필드, 제출 버튼 및 작업 페이지를 포함하는 것처럼 매우 간단 할 수도 있고, 복잡 할 수 있고 이메일과 같은 추가 필드가있을 수도 있고 보안상의 이유로 보안 문자와 함께 메시지를 남길 수도 있습니다.
이 섹션에서는 Python 요청 라이브러리를 사용하여 간단한 제출 양식을 다룰 것입니다.
먼저 다음과 같이 요청 라이브러리를 가져와야합니다.
import requests
이제 로그인 양식의 필드에 대한 정보를 제공해야합니다.
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
다음 코드 줄에서 양식의 작업이 발생할 URL을 제공해야합니다.
r = requests.post(“enter the URL”, data = parameters)
print(r.text)
스크립트를 실행하면 작업이 발생한 페이지의 내용이 반환됩니다.
양식과 함께 이미지를 제출하려는 경우 requests.post ()를 사용하면 매우 쉽습니다. 다음 Python 스크립트의 도움으로 이해할 수 있습니다.
import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)
웹 서버에서 쿠키로드
웹 쿠키 또는 인터넷 쿠키라고도하는 쿠키는 웹 사이트에서 전송되는 작은 데이터이며 당사 컴퓨터는이를 당사 웹 브라우저 내부에있는 파일에 저장합니다.
로그인 양식을 다루는 맥락에서 쿠키는 두 가지 유형이 될 수 있습니다. 하나는 이전 섹션에서 다뤘는데, 이는 웹 사이트에 정보를 제출할 수 있도록하고 두 번째는 웹 사이트를 방문하는 동안 영구적 인 "로그인"상태를 유지할 수 있도록합니다. 두 번째 유형의 경우 웹 사이트는 쿠키를 사용하여 로그인 한 사람과 로그인하지 않은 사람을 추적합니다.
쿠키는 무엇을합니까?
요즘 대부분의 웹 사이트는 추적을 위해 쿠키를 사용하고 있습니다. 우리는 다음 단계를 통해 쿠키의 작동을 이해할 수 있습니다.
Step 1− 첫째, 사이트는 로그인 자격 증명을 인증하고이를 브라우저의 쿠키에 저장합니다. 이 쿠키에는 일반적으로 서버 생성 토크, 타임 아웃 및 추적 정보가 포함됩니다.
Step 2− 다음으로 웹 사이트는 쿠키를 인증 증명으로 사용합니다. 이 인증은 웹 사이트를 방문 할 때마다 항상 표시됩니다.
웹 스크레이퍼가 쿠키를 추적하지 않으면 제출 된 양식이 다시 전송되고 다음 페이지에서 로그인하지 않은 것처럼 보이기 때문에 쿠키는 웹 스크레이퍼에게 매우 문제가됩니다. 다음을 통해 쿠키를 추적하는 것은 매우 쉽습니다. 파이썬 requests 아래와 같이 라이브러리-
import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)
위의 코드 줄에서 URL은 로그인 양식의 프로세서 역할을 할 페이지입니다.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
위 스크립트를 실행 한 후 마지막 요청 결과에서 쿠키를 검색합니다.
때때로 웹 사이트가 경고없이 쿠키를 자주 수정하는 쿠키와 관련된 또 다른 문제가 있습니다. 이런 상황에 대처할 수 있습니다requests.Session() 다음과 같이-
import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)
위의 코드 줄에서 URL은 로그인 양식의 프로세서 역할을 할 페이지입니다.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
세션이있는 스크립트와 세션이없는 스크립트의 차이점을 쉽게 이해할 수 있습니다.
Python으로 양식 자동화
이 섹션에서는 작업을 줄이고 양식 작성 프로세스를 자동화하는 Mechanize라는 Python 모듈을 다룰 것입니다.
기계화 모듈
Mechanize 모듈은 양식과 상호 작용할 수있는 고급 인터페이스를 제공합니다. 사용하기 전에 다음 명령으로 설치해야합니다.
pip install mechanize
Python 2.x에서만 작동합니다.
예
이 예에서는 이메일과 비밀번호라는 두 개의 필드가있는 로그인 양식을 채우는 프로세스를 자동화 할 것입니다.
import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()
위의 코드는 이해하기 매우 쉽습니다. 먼저 기계화 모듈을 가져 왔습니다. 그런 다음 Mechanize 브라우저 개체가 생성되었습니다. 그런 다음 로그인 URL로 이동하여 양식을 선택했습니다. 그 후 이름과 값이 브라우저 개체에 직접 전달됩니다.