Фактический источник этой страницы говорит:
<a href="http://www.generation276.org/film/?m=200812&paged=2" >Pagina successiva »</a>
и это прекрасно. &
является допустимой ссылкой на символ для буквального символа амперсанда в HTML, хотя ссылка на сущность &
обычно более распространена.
<a href="http://www.generation276.org/film/?m=200812&paged=2" >Pagina successiva »</a>
Это недопустимый HTML.
Когда вы сохраняете «только HTML», Chrome сохраняет исходный HTML-код без изменений. Когда вы сохраняете «Complete», он должен переписать страницу, чтобы изменить ссылки на другие ресурсы.
К сожалению, в процессе сериализации, связанном с этим, возникает ошибка, связанная с невозможностью &
- убрать амперсанды в URL. Хотя браузеры, как правило, позволяют вам сойти с рук, он сломается (покалечит ваш URL), если слово справа от амперсанда будет содержать действительное имя объекта HTML или ссылку на символ.
Другие места, где Chrome сериализует значения атрибутов, такие как innerHTML
, не страдают от этой довольно слабой ошибки.
ETA:
Я должен "убрать" с & ... как я могу это сделать?
Если вы попытаетесь очистить информацию из источника с помощью регулярных выражений, вам придется декодировать вручную, используя HTML-декодер. Нет встроенного в Java, поэтому вам понадобится сторонний инструмент, такой как Apache Commons, связанный с seanizer.
Однако, соскоб с регулярным выражением является грубым и ненадежным. Я настоятельно рекомендую использовать анализатор HTML для загрузки файла и выбора нужных вам данных. Он будет иметь дело с декодированием значений атрибутов и текстового содержимого.