看不见我-看不见我 2015-09-15 02:37 采纳率: 0%
浏览 1424

关于java网络爬虫遇到重定向的情况

http://weixin.sogou.com/weixin?query=AECOM&fr=sgsearch&type=2&ie=utf8&w=01019900&sut=3992&sst0=1442279218592&lkt=4%2C1442279216085%2C1442279217157
这十个列表页面,我想知道每条新闻的真实链接,因为重定向过,不知道怎么写,求大神指导
图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 08:41
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,你需要使用Java的HttpClientHttpURLConnection来处理HTTP请求。以下是一个基本的示例,展示了如何从一个网页中提取新闻列表,并尝试获取每个新闻的真实链接。

    首先,确保你的项目中已经包含了HttpClientHttpURLConnection的依赖。如果你在使用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注入等攻击。

    评论

报告相同问题?