我在Android中使用HTML
进行了一些Jsoup
解析,我遇到了一些奇怪的东西(对我而言)。有些网站使用简单的Jsoup.connect(String).get()
方法正常工作。
但在其他一些网站中我总是获得EOFException
。所以我搜索并处理userAgent
属性,当我使用Jsoup.connect(String).userAgent("Mozilla").get()
时,它工作得很好。
那么“mozilla”究竟是什么意思?我的应用只适用于安装了Mozilla
的设备?
答案 0 :(得分:3)
每当您的网络浏览器打开网页时,它都会发送该网页的“请求”。该请求的一部分包括一系列“标题”。假设您使用Firefox打开谷歌,那么这样的东西将被发送到谷歌
Host www.google.com
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language de,en-US;q=0.7,en;q=0.3
Accept-Encoding gzip, deflate
.... 作为回报的HTML响应针对桌面/爬虫或通常针对您正在使用的浏览器(用户代理)进行了优化。有时它与html响应完全不同,html响应例如发送回移动代理(Android)。移动版可能没有与Jsoup选择器匹配的任何内容。因此,使用userAgent(“Mozilla”)。get()您告诉您希望获得与使用桌面浏览器打开google.com时看到的应用程序相同的响应。