Загрузка списка литературы из Google Scholar

Я сохранил ссылки из исследовательской работы в виде списка (как показано ниже): я хочу загрузить их все из Google Scholar. Я успешно загрузил одну статью, указав ее URL-адрес ниже. Теперь мне нужно сделать так, чтобы, поскольку я сохранил все ссылки из научной статьи в списке (в списке 15 ссылок, это означает, что по крайней мере 5 из них будут в pdf), я хочу запустить список в Google Scholar и загрузить доступные PDF-файлы со ссылками. Если pdf недоступен для справки, он должен отображать «PDF недоступен»: я поделился кодом для загрузки одного, я не знаю, как изменить код для списка для загрузки нескольких документов.

 public static void main(String[] args) throws IOException {
               Scanner s = new Scanner(new File("D:\\ref.txt"));

ArrayList<String> list = new ArrayList<String>();
while (s.hasNextLine()){
    list.add(s.nextLine());
    {
        for (String Z : list)
        {
            System.out.println(Z);

        }
    }
}
//System.out.println("LISTZ:" +list);
s.close();//LIST completed



        //code to download the paper from scholar
try {
   //var a= doc.replace(" ","+");

    Document doc = Jsoup
            .connect("https://scholar.google.com.pk/scholar?q=%5B3%5D+W.+H.+Walters%2C+%E2%80%9CGoogle+scholar+coverage+of+a+multidisciplinary+field%2C%E2%80%9D+Information+Processing+%26+Management+%2C+vol.+43%2C+no.+4%2C+pp.+1121+%E2%80%93+1132%2C+July+2007.&btnG=&hl=en&as_sdt=0%2C5")
            .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36")
            .get();

    String title = doc.title();
    System.out.println("title : " + title);


    Elements links = doc.select("div.gs_ggsd").select("a[href]");
    //Element  = doc.select("div.gs_ggs gs_fl").first();

    for (Element link : links) {
        //System.out.println("\nlink : " + link.attr("href"));
        URL website = new URL(link.attr("href"));
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("D:\\paper.pdf");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
} 
       // System.out.println("text : " + link.text());
    }
  /* ByteArrayOutputStream href = new ByteArrayOutputStream();
PrintStream PS = new PrintStream(href);
PrintStream old = System.out;
System.setOut(PS);
System.out.println("Here: " + href.toString());*/


    catch (IOException e) {
    e.printStackTrace();
}



    }




}

person farooq ahmed    schedule 13.06.2017    source источник
comment
Что находится в ref.txt? URL или имя файла?   -  person lihongxu    schedule 13.06.2017
comment
[1] Дж. Бейли, К. Чжан, Д. Бадген, М. Тернер и С. Чартерс, «Перекрытия поисковых систем: они согласны или не согласны?» во втором международном семинаре по реализации научно обоснованной разработки программного обеспечения (REBSE '07), 2007 г., с. 2. [Онлайн]. Доступно: ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=42732 74 Приведенная выше строка находится в ref.txt и во многих других подобных файлах. (имя автора, название статьи, год публикации, конференция или журнал и т. д.) в основном ref.txt содержит имя файла, авторов файла, год публикации файла и место публикации.   -  person farooq ahmed    schedule 13.06.2017
comment
Что вы хотите сделать, используя все эти материалы? В качестве условия запроса?   -  person lihongxu    schedule 13.06.2017
comment
ДА, это будет выглядеть как запрос, как я показал в своем коде, а затем загрузите документ в div, где находится файл PDF.   -  person farooq ahmed    schedule 13.06.2017


Ответы (1)


Вы просто передаете запрос URL-адресу с помощью цикла:

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

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * User: lihongxu
 * Date: 17/6/13
 * Time: 19:42
 * Comments
 */
public class Test {

    public static void main(String[] args) throws IOException {
        Scanner s = new Scanner(new File("D:\\ref.txt"));

        ArrayList<String> list = new ArrayList<String>();
        while (s.hasNextLine()) {
            list.add(s.nextLine());
            {
                for (String Z : list) {
                    System.out.println(Z);

                }
            }
        }
        s.close();// LIST completed


        // code to download the paper from scholar
        for (String query : list) {
            try {
                Document doc = Jsoup
                        .connect("https://scholar.google.com.pk/scholar?q=" + query)
                        .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like " +
                                "Gecko)" +
                                " Chrome/33.0.1750.152 Safari/537.36")
                        .get();

                String title = doc.title();
                System.out.println("title : " + title);


                Elements links = doc.select("div.gs_ggsd").select("a[href]");
                //Element  = doc.select("div.gs_ggs gs_fl").first();

                for (Element link : links) {
                    //System.out.println("\nlink : " + link.attr("href"));
                    URL website = new URL(link.attr("href"));
                    ReadableByteChannel rbc = Channels.newChannel(website.openStream());
                    FileOutputStream fos = new FileOutputStream("D:\\paper.pdf");
                    fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
                }
                // System.out.println("text : " + link.text());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
person lihongxu    schedule 13.06.2017
comment
это работает, но проблема в том, что некоторые ссылки имеют pdf, а некоторые нет! теперь программа работает и работает еще почти 10 минут, и она застряла на 2-й ссылке, потому что для нее нет доступного PDF-файла.! Это в html.! - person farooq ahmed; 13.06.2017
comment
продолжить цикл в блоке catch! - person lihongxu; 13.06.2017
comment
div, который я дал коду, где находится href pdf, иногда загружает его, а иногда отсутствует ссылка, в которой доступен pdf-файл. Опять в чем дело?? - person farooq ahmed; 13.06.2017
comment
Может быть, какой-то тайм-аут PDF - person lihongxu; 13.06.2017
comment
тогда должна быть какая-то проверка, которую я мог бы использовать. - person farooq ahmed; 13.06.2017
comment
Сделать это не слишком сложно! - person lihongxu; 13.06.2017
comment
Я новичок, пожалуйста, я не могу придумать, что делать. ! Пожалуйста, покажите мне. - person farooq ahmed; 13.06.2017
comment
@farooqahmed Не могли бы вы сказать мне, сколько всего PDF-файлов вы хотите загрузить? - person lihongxu; 13.06.2017
comment
все доступные, например, исследовательская работа, которую я сейчас обрабатываю, имеет в общей сложности 10 ссылок, и 5 из них доступны в формате pdf.! количество ссылок и доступность pdf будут варьироваться. - person farooq ahmed; 13.06.2017
comment
Просто проверьте, доступен ли URL-адрес pdf с регулярным выражением. - person lihongxu; 14.06.2017