苏哲哲哲 发表于 2020-6-12 19:03

爬虫,爬取zhi乎回答图片,来玩呀

本帖最后由 苏哲哲哲 于 2020-6-12 19:17 编辑

{:1_905:}
package paImg;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

/**
* Created with IntelliJ IDEA.

*/
public class TestMain3 {
    public static void main(String[] args) throws IOException {
      //下载图片网址自己更换链接
      String url1 = "https://www.zhihu.com/question/50734809";
      Connection connection = Jsoup.connect(url1);
      //下载到本地地址
      String filePath = "D://自己填写本地下载地址";
      File file = new File(filePath);
      System.out.println(filePath+"创建:"+file.mkdirs());
      Document document = connection.get();//获取整个页面的对象
      Element questionMain = document.selectFirst("");
      Element QuestionAnswersanswer = questionMain.selectFirst("");
      Elements bigDivs = QuestionAnswersanswer.select("");//找寻所有的class="List-item"

      int count = 0;//总共下载了多少
      for (Element e : bigDivs){
            Element answer =e.selectFirst("");
            String names = answer.attr("data-zop");
            int left = names.indexOf(":");
            int right = names.indexOf(",");
            String name = names.substring((left+2),(right-1));//获取作者
            Element e1 = e.selectFirst("");
            Elements figures = e1.select("figure");//获取figure标题群
            int a = 0;//每一个用户一共多少张
            for (Element ele :figures){
                a++;
                Element elementImg = ele.selectFirst("img");
                String src = elementImg.attr("src");

                URL url = new URL(src);
                InputStream ips = url.openStream();

                FileOutputStream fos = new FileOutputStream(filePath+"//"+name+a+".jpg");
                System.out.println(name+a);
                byte[] b = new byte;
                int i = ips.read(b);
                while (i != -1){
                  fos.write(b,0,i);
                  fos.flush();
                  i = ips.read(b);
                }
                fos.close();
                ips.close();
                count++;
                System.out.println("下载"+count+"个了");
            }
      }
    }
}




有的问题不可以,应该是格式不一样把,大部分都还行
但是有个缺陷,就是只可以爬取前两名回答的答案图片,凑合用吧,, 有没有会的老哥,说一下怎么爬取所有回答的图片????
                                                                        是不是还得看什么请求头什么什么的
里面还需要个jsoup jar包,可以自己去maven下载。

王星星 发表于 2020-6-12 21:06

seedhk 发表于 2020-6-16 13:40

正在找这类代码

苏哲哲哲 发表于 2020-6-17 15:34

seedhk 发表于 2020-6-16 13:40
正在找这类代码

只可以爬取前两个回答。。。

情书哥哥 发表于 2020-6-17 17:15

支持大佬

seedhk 发表于 2020-6-19 15:17

苏哲哲哲 发表于 2020-6-17 15:34
只可以爬取前两个回答。。。

主要是想学习思想和思路

苏哲哲哲 发表于 2020-6-22 11:59

seedhk 发表于 2020-6-19 15:17
主要是想学习思想和思路

你看一下怎么下载其他回答的,我找不到,好像很复杂 cookie什么的

seedhk 发表于 2020-6-29 20:03

苏哲哲哲 发表于 2020-6-22 11:59
你看一下怎么下载其他回答的,我找不到,好像很复杂 cookie什么的

我去研究下试试

zty521 发表于 2020-6-29 21:02

苏哲哲哲 发表于 2020-6-30 15:38

zty521 发表于 2020-6-29 21:02
这个用到什么软件

java语言 写的软件的话idea eclipse 记事本 都可以
页: [1]
查看完整版本: 爬虫,爬取zhi乎回答图片,来玩呀