JSOUP获取网页数据返回403错误(403 error loading URL,connection类)

最近做的项目需要利用JSOUP进行网页获取和解析,但是遇到了拒绝访问的问题,返回的结果是:

java.io.IOException: 403 error loading URL http://www.xxx.com/xxx

连接代码是这样的:

Document doc = Jsoup.connect(urlString).get();

原本这种方式在大部分时间都可以正确的获取网页代码。

403错误是权限问题拒绝访问,大家都知道的。

我搜了下原因,原来是请求内容不完全,然后我写了如下代码就OK了。

Document doc = Jsoup.connect(urlString).header("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2").get();

 

原因分析:

有些网站的服务器在响应http请求的时候,需要客户端提交的信息比较完善,而在Jsoup的Connection类中这个Header就是完善请求信息用的。

我们的浏览器在请求网页的时候会在请求的头部head中发送一些数据,比如浏览器类型,版本,语言等等。当我们用Jsoup去完成请求网页的工作时,最好也要完善请求包头信息,完成这个工作的就是header方法。

header

Connection header(String name,
                  String value)
Set a request header.

Parameters:
name  - header name
value  - header value
Returns:
this Connection, for chaining
See Also:
Connection.Base.headers()

 

在上面的纠正代码中可以看到我在header里name设置的是User-Agent(表示我要设置的header中的字段,后面的第二个参数value就是对这个字段赋的值)。header value中设置的是操作系统,浏览器,语言类型等等信息(惭愧,我也没完全知道每个值的意思)。这样提交的请求有了比较完善的头信息后,一般的网站server就更乐意服务了。

 技术相关更多文章猛击:哇啦天堂论坛技术区

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例代码,使用jsoup获取IMDb的Top250电影数据: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; public class IMDBTop250 { public static void main(String[] args) throws IOException { String url = "https://www.imdb.com/chart/top/?ref_=nv_mv_250"; Document doc = Jsoup.connect(url).get(); Elements movieList = doc.select("tbody.lister-list tr"); for (Element movie : movieList) { String title = movie.select("td.titleColumn a").text(); String rating = movie.select("td.ratingColumn.imdbRating").text(); System.out.println(title + " - " + rating); } } } ``` 在这个示例中,我们首先连接到IMDb的Top250电影页面。从页面上,我们选择`tbody`元素里的`tr`元素来提取电影的信息。然后,我们使用选择器来定位已提取的元素中的电影标题和评级。 运行上面的程序,我们将看到以下输出: ``` The Shawshank Redemption - 9.238007831031637 The Godfather - 9.108150454619821 The Godfather: Part II - 8.967080658020992 The Dark Knight - 8.938042310005087 12 Angry Men - 8.91242075043334 Schindler's List - 8.885156300376366 The Lord of the Rings: The Return of the King - 8.847953448015244 Pulp Fiction - 8.73701284060397 The Lord of the Rings: The Fellowship of the Ring - 8.727576626158965 Forrest Gump - 8.715307385549031 ``` 提示:需注意IMDb的使用条款,应尊重网站的规则和限制。在实际应用中,应该确保使用IMDb的API或授权数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值