java爬虫抓取动态网页(Java爬虫使用WebMagic框架介绍(一)_Java(图) )
优采云 发布时间: 2021-12-25 02:01java爬虫抓取动态网页(Java爬虫使用WebMagic框架介绍(一)_Java(图)
)
最近如果需要用Java写爬虫,就去学习Java爬虫了。因为之前学过Scrapy框架,所以学Java的爬虫使用的是基于Scrapy框架开发的WebMagic框架。有兴趣的可以去看看操作文档:
这个框架是中国人开发的,所以文档都是中文的,简单易懂。
引入WebMagic框架的方法在操作文档里,这里就不解释了(建议阅读之前先阅读操作文档文章。我导入jar包使用)
我用的版本是0.7.3。
本项目使用webmagic框架抓取网易云播放列表,并将抓取到的内容存入mysql。这个演示之前已经用 Python 实现过。有兴趣的可以看看我之前的文章文章
webmagic的各个模块不再赘述,直接说代码实现即可(默认你已经阅读了操作文档)
首先创建一个Site对象来配置爬虫,包括爬取间隔、重试次数、请求头等。
private Site site = Site.me().setSleepTime(1000).setRetryTimes(3).addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0");
然后写过程方法。流程方法是自定义爬虫逻辑的核心部分,这里制定了筛选规则。
page.putField()方法可以将数据以key:value的形式保存,然后交给pipeline文件处理。
后面的网站的url与第一页的url相差最后一个值,所以可以使用字符串拼接。
然后使用 page.addTargetRequest() 方法将后续 URL 添加到抓取序列中。
(basic是前面定义的静态成员)
url=";cat=%E5%85%A8%E9%83%A8&limit=35&offset="
<p> public void process(Page page) {
//将数据交给pipeline文件处理
page.putField("name",page.getHtml().xpath("//li/p[@class=dec]/a/text()").all());
page.putField("src",page.getHtml().xpath("//li/p[@class=dec]/a/@href").all());
page.putField("clicknum",page.getHtml().xpath("//li//div[@class=bottom]/span[@class=nb]/text()").all());
page.putField("author",page.getHtml().xpath("//li//a[@class=nm]/text()").all());
page.putField("homepage",page.getHtml().xpath("//li//a[@class=nm]/@href").all());
//连续爬取后续网页
int flag = 35;
String nexturl = null;
for (int i=flag; i