Мой вопрос касается возможности очистки данных с определенных веб-сайтов. На данный момент мой алгоритм преобразует HTML в текст, затем проверяет наличие отмеченных слов, содержащихся в файле, и суммирует количество флагов.
Моя проблема заключается в невозможности «прокрутки» вниз при очистке сайта. Как вы можете видеть, он проверяет количество флагов в учетной записи Twitter, но оно ограничено 50 sh последними твитами. Надеюсь, я дал понять.
ps: я привел твиттер в качестве примера, и я не ищу что-то конкретное c для твиттера, но что-то более надежное.
Я буду очень благодарен за любые подсказки.
Пример вывода:
DHS и другие агентства: 0 экземпляров
Domesti c безопасность: 1 экземпляр
HAZMAT & Nuclear : 0 случаев
Проблемы со здоровьем + H1N1: 0 случаев
Безопасность инфраструктуры: 2 случая
Насилие на юго-западной границе: 1 случай
Терроризм: 0 случаев
Погода / Бедствие / Чрезвычайная ситуация: 2 случая
Кибербезопасность: 0 случаев
ОБЩИЕ ФЛАГИ: 6 случаев
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.*;
import java.util.LinkedList;
import java.util.List;
public class Main {
static List<String> dhsAndOtherAgencies = new LinkedList<>();
static List<String> domesticSecurity = new LinkedList<>();
static List<String> hazmatNuclear = new LinkedList<>();
static List<String> healthConcern = new LinkedList<>();
static List<String> infrastructureSecurity = new LinkedList<>();
static List<String> southwestBorderViolence = new LinkedList<>();
static List<String> terrorism = new LinkedList<>();
static List<String> weatherDisasterEmergency = new LinkedList<>();
static List<String> cyberSecutiry = new LinkedList<>();
static String stream;
public static void main(String[] args) throws IOException {
createLists();
createStream();
Raport raport = generateReport();
System.out.println(raport);
}
static int flagStream(List<String> list, String stream){
int counter = 0;
for (String flag: list){
if(stream.contains(flag)) {
System.out.println(flag);
counter++;
}
}
return counter;
}
static Raport generateReport(){
return new Raport(
flagStream(dhsAndOtherAgencies,stream),
flagStream(domesticSecurity,stream),
flagStream(hazmatNuclear,stream),
flagStream(healthConcern,stream),
flagStream(infrastructureSecurity,stream),
flagStream(southwestBorderViolence,stream),
flagStream(terrorism,stream),
flagStream(weatherDisasterEmergency,stream),
flagStream(cyberSecutiry,stream)
);
}
static void createStream() throws IOException {
Document doc = Jsoup.connect("https://twitter.com/realDonaldTrump").userAgent("mozilla/17.0").get();
stream = doc.text();
}
static void createLists() throws IOException {
BufferedReader read = new BufferedReader(new FileReader("clearListAllCases.txt"));
String input;
int hashCounter = 0;
while((input=read.readLine())!=null){
if(input.charAt(0)=='#'){
hashCounter++;
continue;
}
switch (hashCounter){
case 1:
dhsAndOtherAgencies.add(input);
break;
case 2:
domesticSecurity.add(input);
break;
case 3:
hazmatNuclear.add(input);
break;
case 4:
healthConcern.add(input);
break;
case 5:
infrastructureSecurity.add(input);
break;
case 6:
southwestBorderViolence.add(input);
break;
case 7:
terrorism.add(input);
break;
case 8:
weatherDisasterEmergency.add(input);
break;
case 9:
cyberSecutiry.add(input);
break;
}
}
}
}
class Raport {
int a,b,c,d,e,f,g,h,i;
int totalFlags;
Raport(int a, int b, int c, int d, int e, int f, int g, int h, int i){
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
this.h = h;
this.i = i;
totalFlags = a+b+c+d+e+f+g+h+i;
}
public String toString(){
return "DHS & Other Agencies:\t\t\t"+a+" instances\n"+
"Domestic security:\t\t\t\t"+b+" instances\n"+
"HAZMAT & Nuclear:\t\t\t\t"+c+" instances\n"+
"Health Concern + H1N1:\t\t\t"+d+" instances\n"+
"Infrastructure Security:\t\t"+e+" instances\n"+
"Southwest Border Violence:\t\t"+f+" instances\n"+
"Terrorism:\t\t\t\t\t\t"+g+" instances\n"+
"Weather/Disaster/Emergency:\t\t"+h+" instances\n"+
"Cyber Security:\t\t\t\t\t"+i+" instances\n"+
"TOTAL FLAGS:\t\t\t\t\t"+totalFlags+" instances";
}
}