一起搞事情,Java爬虫与自动化测试结合实践(简书等技术博客自动化点赞)

如果这篇文章所涉及到的操作影响到了你,请一定告诉我,我会取消相关操作。非常抱歉!!!谢谢各位
现在绝大多数网页都是动态生成的,那么学习爬虫就意味着更加困难。若是静态网页,只需要了解如何连接网络和分析网页源代码提取标签信息即可,但是动态网页的话,就需要使用到一些特定的框架来爬取了。比较实用的爬取动态网页信息的其中一个工具就是selenium了。先来看看要怎样使用webmagic和selenium来干点特别的事情吧。以下提供简单的代码思路,仅供各位参考。

首先,我们可以学习下用webmagic来爬取诸如简书等技术论坛的文章内容,我们分析下论坛首页结构,每一个博客首页基本上都划分为许多栏目,栏目下面有很多子文章。
我们首先拿到栏目的链接加入到爬取队列中

page.addTargetRequests(page.getHtml().xpath("//*[@id=\"nav\"]/div/div/ul/li/a/@href").all());

然后 我们分析文章详细页的链接

public static String CSDN_ARTICLE = "https://blog\\.csdn\\.net/\\w+/article/details/\\d+";

进行文章详细页面放到待爬取列表

	page.addTargetRequests(page.getHtml()
					.xpath("//*[@id=\"feedlist_id\"]/li/div/div[1]/h2/a/@href")
					.all());

现在我们可以进行文章页面的爬取了,但是爬取信息的并不完整,我们需要用selenium 模拟文章列表页的下拉

	try {
				for (int i = 0; i < 50; i++) {
					WebElement webElement_body = webDriver.findElement(By.cssSelector("body"));
					webElement_body.sendKeys(Keys.END);
					Thread.sleep(100);
				}
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	

好了,现在我们可以拿到各个栏目下面的一部分文章了,如果觉得不够,可以继续下拉页面,现在我们开始进行comment等操作,因为评论等操作在游客模式下是不开放的,所以,我们要进行模拟登录。下面是通过把登录后的Cookie 以json字符串的方式存储起来,然后重新解析成可用Cookie跳过登录验证

	manage.window().maximize();
		manage.deleteAllCookies();
		for (int i = 0; i < myCookies.size(); i++) {
			MyCookie myCookie = myCookies.get(i);
			String name = myCookie.name;
			String value = myCookie.value;
			String path = myCookie.path;
			String domain = myCookie.domain;
			Date expiry = myCookie.expiry;
			boolean isSecure = myCookie.secure;
			Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure);
			manage.addCookie(cookie);
		}

现在,拿到文章页面了,登录验证完成了,我们就开始进行对页面的操作,比如说找个页面上某一个按钮进行点击,当然点击可能是无效的,如果这种情况下,我们可以直接执行js脚本

			WebElement e = webDriver.findElement(By.xpath("//*[@id=\"comment_content\"]"));
			webDriver.findElement(By.xpath("//*[@id=\"btnAttent\"]")).click();	

问题:在这个过程中,我试过用浏览器的headless模式,但是,在headless模式下不能进行click()操作,如果有哪位大佬知道什么原因,请告知下我,愿闻其详。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值