raspado web (recolección web o extracción de datos web) es una técnica de software informático para extraer información de sitios web. La biblioteca Mechanize se utiliza para automatizar la interacción con sitios web. Mechanize gem almacena y envía cookies automáticamente, sigue redireccionamientos y puede seguir enlaces y enviar formularios.
Los campos del formulario se pueden completar y enviar. También realiza un seguimiento de los sitios que ha visitado como un historial. Aprovecha Nokogiri para analizar una página en busca de formularios y botones relevantes y proporciona una interfaz simplificada para manipular un formulario web.
-
rubí 1.8.7, 1.9.2 o 1.9.3
-
Nokogiri
Primeros pasos con Mechanize:
¡Busquemos una página!
Lo primero es lo primero. Asegúrese de haber requerido mecanizar y de crear una instancia de un nuevo objeto de mecanización:
Requiere 'rubíes' requieren 'mecanizar' agente = Mecanizar.nuevo Ahora usaremos el agente que hemos creado para buscar una página. Busquemos Google con nuestro agente mecanizado: página = agente.get ('http://google.com/') Encontrar enlaces
Mechanize devuelve un objeto de página cada vez que obtiene una página, publica o envía un formulario. Cuando se recupera una página, el agente la analizará y colocará una lista de enlaces en el objeto de la página.
Ahora que hemos obtenido la página de inicio de Google, intentemos enumerar todos los enlaces:
página.enlaces.cada uno hace |enlace| pone enlace.texto fin
Podemos enumerar los enlaces, pero Mechanize ofrece algunos atajos para ayudarnos a encontrar un enlace en el que hacer clic. Digamos que queremos hacer clic en el enlace cuyo texto es "Noticias". Normalmente tendríamos que hacer esto:
página = agente.página.enlaces.buscar { |l| l.text == 'Noticias' }.click (o) página = agente.página.link_with(:texto => 'Noticias').click (o) agent.page.links_with(:text => 'Noticias')[1].click (o) page.link_with(:href => '/algo'). El llenado de formularios
Sigamos con nuestro ejemplo de Google. Aquí está el código que tenemos hasta ahora:
Requiere 'rubíes' requieren 'mecanizar' agente = Mecanizar.nuevo página = agente.get('http://google.com/')
Si imprimimos la página, podemos ver que hay un formulario llamado 'f', que tiene un par de botones y algunos campos:
página de páginas
Ahora que sabemos el nombre del formulario, vamos a buscarlo en la página:
google_form = página.form('f')
Echemos un vistazo al código en conjunto:
Requiere 'rubíes' requieren 'mecanizar' agente = Mecanizar.nuevo página = agente.get('http://google.com/') google_form = página.form('f') google_form.q = 'rubí mecanizar' página = agente.enviar (google_form) página de páginas Raspado de datos Mechanize usa Nokogiri para analizar HTML. ¿Qué significa esto para ti? Puedes tratar una página mecanizada como un objeto nokogiri. Después de haber usado Mechanize para navegar a la página que necesita raspar, hágala usando los métodos nokogiri: agente.get('http://someurl.com/').search("p.posted")
La expresión dada a Mechanize::Page#search puede ser una expresión CSS o una expresión XPath:
agente.get('http://someurl.com/').search(".//p[@class='posted']")
La biblioteca Mechanize se utiliza para automatizar la interacción con sitios web. Mechanize gem almacena y envía cookies automáticamente, sigue redireccionamientos y puede seguir enlaces y enviar formularios. Los campos del formulario se pueden completar y enviar. También realiza un seguimiento de los sitios que ha visitado como un historial. aprovecha Nokogiri para analizar una página en busca de formularios y botones relevantes y proporciona una interfaz simplificada para manipular un formulario web.
RielesCarma ha estado trabajando en el marco Ruby on Rails desde su etapa incipiente y se ha encargado de 250 rublos reales proyectos. Con un equipo de más de 100 desarrolladores de RoR conocedores de las últimas técnicas y herramientas, RailsCarma es ideal para ayudarlo con todas sus necesidades de desarrollo.
Estaremos encantados de poder ayudarle con sus consultas. Usa nuestro Contáctenos página para conectarse con nosotros.
Leer artículos relacionados: