첫 번째 웹 크롤러에서 작업 중이며 멕시코에서 전화 번호 데이터를 얻으 려하고 있으며 데이터를 제공하는 웹 사이트는 site입니다. xhr 요청. 는 지금까지이 코드가 있습니다웹 크롤러 - Python이 데이터를 반환하지 않음을 요청합니다.
from requests import Request, Session
import xml.etree.ElementTree as ET
import requests
import lxml.etree as etree
url = 'https://sns.ift.org.mx:8081/sns-frontend/consulta-numeracion/numeracion-geografica.xhtml'
s = Session()
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',
'Content-Type': 'text/html; charset=UTF-8',
}
str1 = s.post(url, headers=headers) #Loading the page
xhtml=str1.text.encode('utf-8')
#Savig the first response, to get the ViewState
text_file = open("loaded.txt", "w")
text_file.write(xhtml)
text_file.close()
x = ET.fromstring(xhtml)
namespace = "{http://www.w3.org/1999/xhtml}"
path = './/*[@id="javax.faces.ViewState"]'
e = x.findall(path.format(namespace))
for i in e:
VS = i.attrib['value'] #ViewState
print VS #ViewState
나는 페이지의 ViewState를 얻을이 시점에서를, 지금은 데이터와 내가 참조 할 수 플러스의 ViewState에 새 게시물을 보낼 수 있습니다.
data = {
"javax.faces.partial.ajax": "true",
"javax.faces.source": "FORM_myform:BTN_publicSearch",
"javax.faces.partial.execute": "@all",
"javax.faces.partial.render": "FORM_myform:P_containerConsulta+FORM_myform:P_containerpoblaciones+FORM_myform:P_containernumeracion+FORM_myform:P_containerinfo+FORM_myform:P_containerLocal+FORM_myform:P_containerDesplegable",
"FORM_myform:BTN_publicSearch": "FORM_myform:BTN_publicSearch",
"FORM_myform": "FORM_myform",
"FORM_myform:TXT_NationalNumber": "6564384757",
"javax.faces.ViewState=": VS #ViewState
}
req = s.post(url, data=data, headers=headers)
#Saving the new response, this is supposed to bring the results
text_file = open("Output.txt", "w")
text_file.write(req.text.encode('utf-8'))
text_file.close()
것은 내가 얻을 응답이 정보가없는 페이지의 전체 코드입니다, 그리고 나는 그것이 새로운 ViewState를 함께 제공 것으로 나타났습니다, 나는 데이터 컨설팅되지 않는 이유는 믿습니다. 또한 서버에 그래픽 인터페이스가 없기 때문에 셀레늄을 사용하고 싶지 않으며 매일 많은 숫자를 문의해야합니다.
... 업데이트 ... 이 문제는 JSF에 의존하고 데이터와 JSF 값을 처리하는 방법을 알아야한다고 생각합니다.
과 같을 것 결과를 산출 할 수있는 검색 입력이 있습니까? – SIM
@Shahin 나는 분명히하기 위해 미안하다. "Numero Nacional"텍스트 상자에 숫자 "6564384757"을 입력하고 필요한 정보가 첫 번째 테이블의 맨 아래에 있습니다. "Proveedor de telefonia que atiende el numero". 이 경우 값은 "AXTEL"입니다. –
@ Neto A, 숫자를 오른쪽 상자에 넣은 후에도 검색 단추는 여전히 회색으로 표시됩니다. 그래서 나는 그것을 사용할 수 없다. 링크를 참조하십시오 https://www.dropbox.com/s/y9zfzpsdao9kup5/Untitled.jpg?dl=0 – SIM