Okay, damit habe ich meinen Yelp-Scanner fertiggestellt, und alles läuft super. Was ich jetzt tun möchte, ist das Programm haben die URL für jeden Link zu jedem Geschäft abrufen, um zu dieser Seite zu gehen, und suchen Sie nach, ob es enthält:Wie kann ich mithilfe von Jsoup eine URL von einem Link auf einer Website abrufen?
xlink:href="#30x30_bullhorn"></use>
Ich habe so ziemlich ein eine gute Idee, wie ich das machen werde, aber ich kann anscheinend keine jSoup-Methode finden, die die URL eines Links abrufen würde. Gibt es irgendwo im HTML der Seite die URL? Ich bin überhaupt nicht sehr gut mit HTML vertraut, so dass 90% von dem, was ich sehe, gibbing ist. Hier ist ein Beispiellink, wenn Sie herausfinden möchten, was ich meine.
https://www.yelp.com/search?find_loc=nj&start=10 ist die Hauptseite, die ich brauche, um die URL für die Seite https://www.yelp.com/biz/la-cocina-newark zu erhalten. Das orange Megafon ist das, was ich versuche, es zu holen. Hier ist mein Code btw:
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.Scanner;
public class YelpScrapper
{
public static void main(String[] args) throws IOException, Exception
{
//Variables
String description;
String location;
int pages;
int parseCount = 0;
Document document;
Scanner keyboard = new Scanner(System.in);
//Perform a Search
System.out.print("Enter a description: ");
description = keyboard.nextLine();
System.out.print("Enter a state: ");
location = keyboard.nextLine();
System.out.print("How many pages should we scan? ");
pages = keyboard.nextInt();
String descString = "find_desc=" + description.replace(' ', '+') + "&";
String locString = "find_loc=" + location.replace(' ', '+') + "&";
int number = 0;
String url = "https://www.yelp.com/search?" + descString + locString + "start=" + number;
ArrayList<String> names = new ArrayList<String>();
ArrayList<String> address = new ArrayList<String>();
ArrayList<String> phone = new ArrayList<String>();
//Fetch Data From Yelp
for (int i = 0 ; i <= pages ; i++)
{
document = Jsoup.connect(url).get();
Elements nameElements = document.select(".indexed-biz-name span");
Elements addressElements = document.select(".secondary-attributes address");
Elements phoneElements = document.select(".biz-phone");
for (Element element : nameElements)
{
names.add(element.text());
}
for (Element element : addressElements)
{
address.add(element.text());
}
for (Element element : phoneElements)
{
phone.add(element.text());
}
for (int index = 0 ; index < 10 ; index++)
{
System.out.println("\nLead " + parseCount);
System.out.println("Company Name: " + names.get(parseCount));
System.out.println("Address: " + address.get(parseCount));
System.out.println("Phone Number: " + phone.get(parseCount));
parseCount = parseCount + 1;
}
number = number + 10;
}
}
}
Das Inspektor-Tool hat Tonnen von Hilfe! Es ist schön, dass es genau anzeigt, wo es auf der Seite ist, also weiß ich genau, wo ich suchen soll. –
@BrandonWoodruff genau. Moderne Webseiten sind so komplex, dass es fürchterlich wäre, irgendeinen Schaber ohne etwas wie den Inspektor zu bauen. –