http://weixin.sogou.com/weixin?query=AECOM&fr=sgsearch&type=2&ie=utf8&w=01019900&sut=3992&sst0=1442279218592&lkt=4%2C1442279216085%2C1442279217157
这十个列表页面,我想知道每条新闻的真实链接,因为重定向过,不知道怎么写,求大神指导
关于java网络爬虫遇到重定向的情况
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-04 08:41关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
要解决这个问题,你需要使用Java的
HttpClient和HttpURLConnection来处理HTTP请求。以下是一个基本的示例,展示了如何从一个网页中提取新闻列表,并尝试获取每个新闻的真实链接。首先,确保你的项目中已经包含了
HttpClient和HttpURLConnection的依赖。如果你在使用Maven,可以在pom.xml文件中添加以下依赖:<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version> </dependency>然后,你可以使用以下代码来获取新闻列表并获取真实链接:
import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws IOException { String url = "http://weixin.sogou.com/weixin?query=AECOM&fr=sgsearch&type=2&ie=utf8&w=01019900&sut=3992&sst0=1442279218592&lkt=4%2C1442279216085%2C1442279217157"; DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); HttpResponse response = httpClient.execute(httpGet); // 读取响应正文 try (InputStream in = response.getEntity().getContent()) { Document document = Jsoup.parse(in, "UTF-8"); Elements elements = document.select("div.wx-rb.wx-rb3"); List<String> links = new ArrayList<>(); for (Element element : elements) { Element h4 = element.selectFirst("h4"); String link = h4.selectFirst("a").attr("abs:href"); links.add(link); } System.out.println(links); } finally { httpClient.getConnectionManager().shutdown(); } } }这个代码首先发送一个GET请求到给定的URL。然后,它解析返回的HTML文档,并从中提取出所有包含标题的
<h4>元素。对于每个标题,它都试图找到相应的超链接,并将其存储在一个列表中。注意:这只是一个基本的示例,实际操作可能需要根据你具体的需求进行调整。例如,你可能需要处理重定向、错误状态码或其他异常情况。此外,为了安全起见,请不要直接访问用户输入的内容,而是应该将这些内容包装起来,以防止SQL注入等攻击。
解决 无用评论 打赏 举报