AliceWeb2에서 정보를 검색하려고합니다. 이렇게하려면 로그인해야하지만 할 수 없습니다. 나는 아래와 같이 요청 방법 : POST가있는 페이지에 대한 Chrome의 검사 도구에 사용자, 패스 및 검색을 입력했습니다.FormRequest 로그인 할 때 문제가 발생했습니다
.
그래서, 다음 코드를 사용하여 모든의
AliceWeb2에서 정보를 검색하려고합니다. 이렇게하려면 로그인해야하지만 할 수 없습니다. 나는 아래와 같이 요청 방법 : POST가있는 페이지에 대한 Chrome의 검사 도구에 사용자, 패스 및 검색을 입력했습니다.FormRequest 로그인 할 때 문제가 발생했습니다
.
그래서, 다음 코드를 사용하여 모든의
첫째, 대신 return
의 yield
를 사용 할 때마다 당신은 요청을 모방하려고 :
from scrapy.item import Item, Field
from scrapy.http import FormRequest
from scrapy.spider import Spider
from scrapy.utils.response import open_in_browser
from scrapy import Request
class AliceWeb2(Spider):
name = "login"
# Start on the welcome page
def start_requests(self):
return [Request(
"http://aliceweb.mdic.gov.br//usuario/login/",
callback=self.parse_welcome)]
# Post welcome page's first form with the given user/pass
def parse_welcome(self, response):
formdata = {'logUser': 'rtadewald',
'logPass': '123'}
return FormRequest.from_response(
response,
formdata=formdata)
을 나는이 있어요 , Dev Tools를 열고 해당 URL의 cURL을 복사 한 다음이 https://curl.trillworks.com/ 웹 사이트로 이동하여 Python 코드를 얻은 다음 해당 코드를 Scrapy로 다시 사용하십시오.
class AliceWeb2(Spider):
name = "login"
# Start on the welcome page
def start_requests(self):
headers = {
'Origin': 'http://aliceweb.mdic.gov.br',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US,en;q=0.9',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Cache-Control': 'max-age=0',
'Referer': 'http://aliceweb.mdic.gov.br/usuario/recuperar-senha',
'Connection': 'keep-alive',
'DNT': '1',
}
yield Request('http://aliceweb.mdic.gov.br//usuario/login?tx_usuario=ABC&tx_senha=ABC', callback=self.parse_welcome, headers=headers, data=data, method="POST")
def parse_welcome(self, response):
#do something here
편집 1 : 내가 개발 도구에 요청을 관찰 , 나는 이러한 매개 변수가 스크린 샷 FORM DATA
를 참조 전송되고 있었다 보았다.
(다른 팁) : preserver log
을 확인하여 로그인 후 다른 페이지로 리디렉션되는 경우 이전 페이지에서 전송 된 요청을 볼 수 있습니다.
당신의 오류 메시지를 게시! 정말 고맙습니다! 간단한 질문 대신 'http : //aliceweb.mdic.gov.br//usuario/login? tx_usuario = ABC & tx_senha = ABC'**에 요청해야한다는 것을 어떻게 알았습니까? * http : //aliceweb.mdic.gov.br//usuario/login** 고마워! 편집 1 : "로그 보존"을 선택하면 표시되는 양식 데이터를 볼 수 없습니다. 다른 옵션이 있습니까? https://i.stack.imgur.com/RBwR2.png –
@RodrigoSoaresTadewald 불가능합니다 ... 해당 매개 변수를 확인해야합니다 ... 어떤 크롬 버전을 사용하고 있습니까? 그것은 모든 크롬 버전 BTW에서 그 매개 변수를 표시해야합니다 .... 잘못된 사용자/패스 조합을 입력하고 그들이 나타나면보십시오보십시오 – Umair
, 그것은 작동 – parik