Java Selenium 爬取微信公众号文章图片.md

2 篇文章 0 订阅

项目地址结尾

一、前期准备

1. 下载selenium的驱动

Chrome

http://chromedriver.storage.googleapis.com/index.html

Firefox

https://github.com/mozilla/geckodriver/releases/

IE

http://selenium-release.storage.googleapis.com/index.html

下载好驱动然后放到、对应的浏览器的启动目录

image-20200509204940445

2. 创建一个Maven项目

并在pom.xml中导入

    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.11.3</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

二、先梳理一下思路。

image-20200509205429452

爬这个页面的所有链接文章里面的图片。

1.先爬取所有的链接 存为一个 links [List]
2.再爬取所有links里面的picLinks [List<List >]
3.根据所有的链接下载图片

三、排坑

1.先说为啥我没用request库。

因为我发现微信公众号的链接太诡异了,跳转太多,懒得去找了。有大佬也可以给我说一下咋得到文章真实链接了。

推荐一个结合charles、或者chrome,的curl转代码的工具

https://curl.trillworks.com/

2.文章列表业进度条是动态加载的

可以通过selenium模拟js向下滚动,滚动个三四下,就好了。注意要停个一点时间。

JavascriptExecutor driver_js = (JavascriptExecutor) webDriver;
driver_js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
            for(int i=0;i<3;i++) {
                driver_js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
                try {
                    Thread.sleep(3000); // 等0.3秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

image-20200509212643353

3. 用无头浏览器进行操作 [就是不让浏览器显示出来]

// 我这里也设置了一下环境变量 避免找不到

    public static WebDriver getChromeDriver(){
        if (webDriver == null) {
            System.setProperty("webdriver.chrome.driver", "C:\\Users\\lenovo\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe");
            // FirefoxDriver()            火狐浏览器
            //谷歌浏览器
            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("-headless");
            webDriver = new ChromeDriver(chromeOptions);
        }
        return webDriver;
    }

项目地址:

https://github.com/Bit-urd/crawls-java

我的项目结构 [其实单纯的实现功能没这么麻烦],毕竟想着Java做就工程化一下,方便以后的复用。现在有些类还没有完善,以后用到功能再完善。

入口类:WevhatImageParse.java

image-20200509204558507

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值