SGAU Ответов: 1

Как извлечь все URL - адреса из HTML-страницы


I have below response that I got by sending GET request to some server (GET /k/302.html HTTP/1.0) using java socket connection.

HTTP/1.1 200 OK
Date: Thu, 25 Apr 2019 06:31:21 GMT
Server: Apache/2.4.29 (Ubuntu)
Last-Modified: Thu, 11 Apr 2019 11:44:58 GMT
ETag: "59-5863fb73cdcbb"
Accept-Ranges: bytes
Content-Length: 89
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

<html>
	<body>
		<a href="/"> More pages </a>
		<img src="redback.jpg">
	</body>
</html>
Connection closed by foreign host.

I have to write simple java code where I am suppose to crawl all the urls present on this current webpage (/k/302.html).
Currently I am able to extract the first url ("/") using java regular expression as <pre lang="java">"<a\\s+href\\s*=\\s*(\"[^\"]*\"|[^\\s>]*)\\s*>"
.

Но я не могу получить второй url-адрес, который предназначен для тега.

Ниже приведен расширенный html-контент, который я получил из консоли, где он четко указывает, что "redback.jpg-есть гиперссылка.

<span class="html-tag"><img <span class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link" target="_blank" href="redback.jpg" rel="noreferrer noopener">redback.jpg</a>"></span>


Но если мы видим ответ GET, он не ясно говорит о том, что у него есть гиперссылка. Как извлечь такие URL-адреса только из ответа? Я должен сделать это в простой java, используя сокет-соединение со стандартным запросом HTTP без использования каких - либо других внешних библиотек.



Что я уже пробовал:

Для простой URL-адрес, я попытался с помощью регулярных выражений в Java
<pre lang="java">"<a\\s+href\\s*=\\s*(\"[^\"]*\"|[^\\s>]*)\\s*>"
. но не получается, как получить для встроенных тегов href, потому что я не получаю такую информацию в ответе HTTP GET.

1 Ответов

Рейтинг:
1

Christian Graus

Вы можете выполнить поиск href=, чтобы получить относительные URL-адреса. В принципе, если регулярное выражение не работает, разберитесь в тех случаях, когда оно не работает, и строчите их


SGAU

Это я уже сделал, и он может получить первую ссылку, но не вторую внутри тега img

Christian Graus

Прочтите мой ответ еще раз. Если вы определяете ситуации, когда регулярное выражение не работает (я бы сказал, что это все относительные ссылки), вы можете найти их все, выполнив поиск имен тегов