HtmlUnit java reptil Conseguir ejemplos del mundo real para explicar el sitio web del proveedor de electricidad rastreo de datos

El uso reciente de tiempo libre para ayudar a un amigo hizo un conjunto de datos que se arrastran desde los sitios web de varios proveedores de electricidad applet usando HtmlUnit sensación HtmlUnit arrastrándose velocidad y la estabilidad sigue siendo muy bueno, así escribir una entrada de blog describe el uso bajo HtmlUnit relevante se puede considerar el registro acerca

Esta es la página principal del sitio

La idea es conseguir que los productos básicos div específica de dónde obtener los datos de la etiqueta href <a> de cada elemento para introducir la URL de la mercancía mediante el rastreo div luego exportar tabla de Excel características tales como la traducción automática

1. En primer lugar hay que sacar a los datos de la página principal

WebClient webClient = new WebClient(BrowserVersion.CHROME  );//模拟创建打开一个谷歌浏览器窗口
webClient.getOptions().setTimeout(15000);//设置网页响应时间
webClient.getOptions().setUseInsecureSSL(true);//是否
webClient.getOptions().setRedirectEnabled(true);//是否自动加载重定向
webClient.getOptions().setThrowExceptionOnScriptError(false);//是否抛出页面javascript错误
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//是否抛出response的错误
webClient.getOptions().setJavaScriptEnabled(false);// HtmlUnit对JavaScript的支持不好,关闭之
webClient.getOptions().setCssEnabled(false);// HtmlUnit对CSS的支持不好,关闭之
String url = "https://shop.sanrio.co.jp/products/list.php?product_status=1";
HtmlPage page = webClient.getPage(url);//通过url获取整个页面
De esta manera obtenemos htmlpage tema de la página.

Al observar el método del objeto de página puede ser capaz de encontrarlo en elementos como JS escribió las mismas páginas de operación

2. Ver código fuente Obtiene Una mercancía etiqueta en el div correspondiente (imágenes con escala pueden enderezar ver original)


Que las mercancías se encuentran en un nido = lo anterior Identificación del mencionado "prdlist" de la div para que podamos

// 获取A标签的div
HtmlDivision element = (HtmlDivision) page.getHtmlElementById("prdlist"); 
Esto hará que los bienes a la etiqueta div correspondiente  y, a continuación vamos a ver cada uno de los productos básicos individuales div código fuente correspondiente para obtener la dirección web


Este código fuente es cada individuo div mercancía correspondiente podemos ver el div para cada artículo es sólo una etiqueta A, siempre y cuando se llega a la etiqueta A en Ok

DomNodeList<HtmlElement> list = element.getElementsByTagName("a"); // 获取页面上的所有A连接(商品标签)
out2: for (HtmlElement htmlElement : list) {
   HtmlPage click = htmlElement.click(); // 进入商品页面
   HtmlDivision div3 = (HtmlDivision) click.getByXPath("//div[@class='box_right_summary']").get(0); // 获得名字的div
}
Esta URL solo el contenido rastreado para tomar un ID div que no hay div u otra identificación de la etiqueta debe ser la forma de conseguirlo HtmlUnit buen paquete getByXPath un método diseñado para rastreo específico redacción no recibe un nombre especial etiqueta encima de la carta de DIV recupera el atributo de clase del div = colección box_right_summary

HtmlUnit viene en base contiene todas las etiquetas HTML, como HtmlInput HtmlTable HtmlSpan etc., etc. Los lectores pueden descargar un frasco para ti

Además, el uso de la sintaxis XPath puede hacer referencia a este artículo  sintaxis XPath

Además HtmlUnit podrán también presentar una forma analógica a utilizar HTMLElement el método click () para obtener cuadro de formulario entrada y después fijar el valor para simular un evento de clic

 // 获取首页
	    final HtmlPage page1 = (HtmlPage) webClient.getPage("http://htmlunit.sourceforge.net");

	    // 根据form的名字获取页面表单,也可以通过索引来获取:page.getForms().get(0)
	    final HtmlForm form = page1.getFormByName("myform");
	    final HtmlSubmitInput button 
	        = (HtmlSubmitInput) form.getInputByName("submitbutton");
	    final HtmlTextInput textField 
	        = (HtmlTextInput) form.getInputByName("userid");

	    // 设置表单域的值
	    textField.setValueAttribute("root");

	    // 提交表单,返回提交表单后跳转的页面
	    final HtmlPage page2 = (HtmlPage) button.click();
Es sólo una manera de ponerse en el camino también puede XPath ID TagName etc. métodos requieren al lector a explorar

3. A continuación, entrar en la página de detalles de productos de información de producto

Esta es la página de detalles del producto que necesitamos para llegar a su perfil, y otro nombre imágen Precio

Luego observe Fuente

Esta div puede llegar a nombrar Precio

HtmlDivision div3 = (HtmlDivision) click.getByXPath(
						"//div[@class='box_right_summary']").get(0); // 获得名字的div

String name = div3.getElementsByTagName("h2").get(0).asText();
excels.setJname(name); // 设置日本名字 (这是自己创建的导出EXCEL的实体类)
// 获取商品的价格信息
HtmlSpan span = (HtmlSpan) click.getByXPath("//span[@class='priceSelect']").get(0);
String cname = getCname(name); // 通过百度翻译接口获取中文名字 
excels.setCname(cname);
El siguiente es el número de dimensiones y otras materias primas


Se puede encontrar en la figura.

// 获取商品的详细信息
				HtmlDivision div2 = (HtmlDivision) click.getByXPath(
						"//div[@class='productSummary accordionBlock01']").get(
						0);

				DomNodeList<HtmlElement> ths = div2.getElementsByTagName("tr");
				for (HtmlElement th : ths) {
					if (th.getElementsByTagName("th").get(0).asText().equals("サイズ")) {
						String sizeString = th.getElementsByTagName("td")
								.get(0).asText();
						
						// 设置商品尺寸
						excels.setSize(sizeString);

						
					}
					if (th.getElementsByTagName("th").get(0).asText().equals("商品コード")) {

						// 商品编号
						String nums2 = th.getElementsByTagName("td").get(0)
								.asText();
						// 设置商品编号
						excels.setNums2(nums2);
					}
				}
El código escrito en el maquillaje no estándar de hacer y ver

A continuación hay que obtener información de la foto bienes

HtmlDivision div = (HtmlDivision) click.getByXPath(
						"//div[@class='box_pic']").get(0);
				// System.out.println(div.asXml());
				DomNodeList<HtmlElement> imgs = div.getElementsByTagName("img");
				// 遍历 下载图片到本地
				for (HtmlElement img : imgs) {
					download(SANLIOU + img.getAttribute("src"), DOWNDS
							+ filename + "/");//这是自己封装的下载图片的方法
				}
Eso SANLIOU + img.getAttribute ( "src") es en realidad representada por la dirección URL de la imagen debido a que el cuadro general no es la ruta completa url Esta vez tenemos que copiar manualmente la raíz del sitio, más el atributo src de la etiqueta img de obtener una imagen real de dirección, tales como:

Esta es una foto de los bienes src img no es completa

La dirección de la página web es: https: //shop.sanrio.co.jp/products/detail.php product_id = 54355?

Nos intercepción https://shop.sanrio.co.jp Esta es la raíz del sitio, más /upload/save_image/N-1801-318795_1.jpg para formar una imagen del verdadero camino

Hasta ahora más o menos el rastreo de contenido para completar el caso detallado del proyecto subo a la descarga se puede ir a ver a mi RDCC caso de descarga

HtmlUnit es en realidad una base de trama poco muy simple, siempre y cuando hay una buena portada la escuela es muy fácil de lograr su entrada función deseada



Publicado 15 artículos originales · ganado elogios 21 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/q690080900/article/details/79072729
Recomendado
Clasificación