Я использовал Jsoup для того, чтобы получить определенные слова из поиска Google, но это не в моем понимании в процессе запроса Jsoup.
Он успешно попадает в метод doInBackground, но не выводит заголовок и тело каждой ссылки в поиске.
Я предполагаю, что список, который я получаю из doc.select (ссылки), пуст. что приводит к проблеме синтаксиса запроса
значение - это поиск по ключевым словам, в моем случае, это штрих-код, который на самом деле работает. Вот ссылка
Вот асинхронный вызов из другого класса:
String url = "https://www.google.com/search?q=";
if (!value.isEmpty())
{
url = url + value + " price" + "&num10";
Scrape_Asynctasks task = new Scrape_Asynctasks();
task.execute(url);
}
, а вот сама асинхронная задача:
public class Scrape_Asynctasks extends AsyncTask<String, Integer, String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... strings) {
try
{
Log.i("IN", "ASYNC");
final Document doc = Jsoup
.connect(strings[0])
.userAgent("Jsoup client")
.timeout(5000).get();
Elements links = doc.select("li[class=g]");
for (Element link : links)
{
Elements titles = link.select("h3[class=r]");
String title = titles.text();
Elements bodies = link.select("span[class=st]");
String body = bodies.text();
Log.i("Title: ", title + "\n");
Log.i("Body: ", body);
}
}
catch (IOException e)
{
Log.i("ERROR", "ASYNC");
}
return "finished";
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
}