Webcrawler – Wie kann ich mit Java Informationen crawlen und ein Ranking-System erstellen?
迷茫
迷茫 2017-06-12 09:19:16
0
4
594

Ich habe zufällig ein interessantes Projekt zu erledigen, während ich Java Web lerne.
Unsere Schule benötigt für morgendliche Läufe Kreditkarten. Die Sportabteilung stellt eine Anfrage-Website zur Verfügung, stellt jedoch keine Schnittstelle zur Verfügung.
Ich möchte eine Website/WeChat-Backend erstellen, um Informationen von der Schulwebsite zu erfassen und in einer Datenbank zu speichern. Dann können Benutzer ihre Laufaufzeichnungen über meine Website/WeChat überprüfen. Und zeigen Sie Rankings und andere Funktionen basierend auf diesen Datensätzen an.

Zur Abfrage müssen Sie lediglich Ihre Matrikelnummer und Ihren Namen angeben. Diese Daten liegen bereits vor.

Die simulierte Anmeldung wird mit httpclient implementiert. Die gesamte Seite wird abgerufen
Die Seite ist eine Tabelle mit Datensätzen. Was sollte zum Extrahieren von Daten aus der Seite verwendet werden?

In Bezug auf die Richtung von Java Web werde ich JSP nur zum Schreiben von Hinzufügen, Löschen, Ändern und Überprüfen verwenden. Ich weiß nicht viel darüber, was folgt.

Ich möchte einen solchen Crawling-Vorgang für die Hintergrundverwaltung durchführen, um eine Benutzeranfrage zurückzugeben.
Wo soll ich mit dem Lernen beginnen? Oder welche Art von Technologie/Framework wird verwendet?

Über die Abfrage-Website:
Ein Element ist die Anzahl der Laufübungen.
Was folgt, ist der entsprechende Datensatz, der die Laufzeit auf die Minute genau anzeigt.

Crawling ist nicht der schwierigste Teil. Das Problem besteht darin, wie man ein solches Managementsystem aufbaut. Es gibt keine Ahnung, wie man einen vollständigen Web-Stack entwickelt.
Mir ist klar, dass ich keinen Kommentar abgeben kann. . .

Danke!

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

Antworte allen(4)
Ty80

我就随便说个,因为我也没想到用什么方法。

用Jsoup去爬页面数据,哈哈

代言

想到了几点,简单说下:
1.数据抓取,可以自己写抓取程序,制定数据爬取的时间规则之类的
2.数据处理,抓取到网页的内容通过jsoup或者其他方式对网页有效内容提取,并设计数据结构,学号应该是唯一的,可以有学员表和晨跑记录表,通过学号进行关联
3.我的个人理解是按照次数排序,因为想了下,如果按照时间排序是不合理的,因为是没有办法判断真正的晨跑时间的,那我这里就按次数来说吧,可以直接在学员表存放跑步次数的字段,减少通过记录表查询,提高效率,就是需要数据处理时维护此字段

三叔

一般来说呢,是基于httpclient这样的工具将返回包拿到,解析报文实体(这里指html页面),接下来就是利用xpath、正则、类似于jQuery方式解析DOM元素获取你想要的数据(如jsoup包),如果还嫌麻烦可以使用webmagic框架

巴扎黑
  1. 模拟登陆:用浏览器打开登陆页观察接收学号密码的url;模拟登陆时post数据到该url;从response的header中解析Set-cookie字段信息;

  2. 数据抓取:向体育数据页发起get请求(带上上一步中拿到的cookie字段),拿到response,然后进行正则解析获得数据即可;

建议:缓存用户每次查询的数据,比如缓存2个小时,建议使用redis;数据库可以存查询到的数据,先从redis中取数据,取不到再模拟登陆拿新数据。至于数据库这一层,个人感觉可有可无,有的话也可以进行数据分析什么的

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!