[Java + jsoup] Scraping des produits Mercari à vendre

【Aperçu】

Spécifiez simplement l'URL Mercari pour récupérer les produits à vendre et listez-les sur la page HTML1. Il était difficile d'afficher les signets Mercari un par un, alors je l'ai automatisé. Il est répertorié sur GitHub → Mercari Scraping

[Préparation]

-Ecrivez l'URL du produit que vous souhaitez obtenir dans un fichier texte. Les lignes avec un "#" pointu demi-largeur au début sont traitées comme des commentaires. (Dans cet exemple, C: \ Users \ nobu \ Desktop \ tmp \ mercari_url.txt)

mercari_url.txt


#Algorithmes C standard et structures de données pour les programmeurs
https://item.mercari.com/jp/product_key/1_28384941/
#Oracle PL professionnel/Introduction à SQL [3e édition]
https://item.mercari.com/jp/product_key/1_33099446/
#Premier Perl
https://item.mercari.com/jp/product_key/1_32331276/

【code】

Main.java


package scrap.main;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class Main {
	public static String MERCARI_URL_FILE = "C:\\Users\\nobu\\Desktop\\tmp\\mercari_url.txt";
	public static String OUTPUT_HTML_FILE = "C:\\Users\\nobu\\Desktop\\tmp\\output_mercari.html";

	public static void main(String[] args) {

		//Lire l'URL de Mercari
		BufferedReader reader = null;
		try {
			reader = new BufferedReader(
					new InputStreamReader(new FileInputStream(MERCARI_URL_FILE), StandardCharsets.UTF_8));
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}

		String str;
		Document document = null;
		Elements element = null;
		String html = "";
		try {
			while ((str = reader.readLine()) != null) {
				//Demi-largeur nette au début"#"Passer la ligne de commentaire qui est
				if (str.startsWith("#")) {
					continue;
				}

				int pageNo = 1;
				//Boucle vers une URL qui n'a pas de produit à vendre
				do {
					//Obtenir la source de la page, demander un délai d'expiration de 10 secondes
					document = Jsoup
							.connect(str + "?page=" + pageNo + "#sell-items")
							.timeout(10000).get();
					element = document.getElementsByClass("entertainment-product-sell-item-content");
					html += element.outerHtml();
					pageNo++;
				} while (!element.isEmpty());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

		//création de fichier html
		try {
			File file = new File(OUTPUT_HTML_FILE);
			PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
			pw.println("<!DOCTYPE html>");
			pw.println("<html lang=\"ja-JP\">");
			pw.println("<head>");
			pw.println("<link href=\"https://item.mercari.com/jp/assets/css/app.jp.css?3062056556\" rel=\"stylesheet\">");
			pw.println("</head>");
			pw.println("<body>");
			pw.println("<main class=\" l-container clearfix\">");
			pw.println(html.replaceAll("class=\"lazyload\"", "").replaceAll("data-src", "src"));
			pw.println("</main>");
			pw.println("</body>");
			pw.println("</html>");
			pw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

【Résultat de l'exécution】

Quand tu cours C:\Users\nobu\Desktop\tmp\output_mercari.html Est terminé. L'image fait partie de la page et est une information au moment de la rédaction de cet article.

メルカリ.png

Recommended Posts

[Java + jsoup] Scraping des produits Mercari à vendre
Pour l'apprentissage JAVA (2018-03-16-01)
IDE 2017 pour Java
Java pour instruction
J'ai essayé de gratter un graphique boursier en utilisant Java (Jsoup)
[Java] pour instruction, while instruction
Gratte de sites Web avec jsoup
[Java] Package de gestion
[Java] pour instruction / étendu pour instruction
Pratique de grattage avec Java ②
Contre-mesures pour OutOfMemoryError en java
PNL pour Java (NLP4J) (2)
(Mémo) Java pour instruction
PNL pour Java (NLP4J) (1)
Pratique du grattage avec Java ①