爬虫思路

想做的事情

1.有个文本文件,里面有很多网站列表,写爬虫将那些网站跟某些关键字有关的信息抓取下来。

做法

1.因为是第一次接触用java写爬虫,所以去查了一些有关java爬虫方面的资料,对比了几个爬虫框架之后,决定先使用webmagic作为框架来使用看看。
2.选择网站清单里的一个网站,使用webmagic来试试看爬虫怎么写,写了个简单的demo,成功获取到了HTML页面,后面选择用xpath来选择想要的内容。
3.在爬取另外一个网站的时候,发现有些网站有反爬限制,于是使用了代理ip来应对对ip的限制,在网上找了免费的代理ip,成功解决了问题。
4.之前爬的都是前后端不分离的网站,遇到前后端分离的网站时,webmagic不能执行js,查资料之后决定先使用htmlunit来解释js,用htmlunit根据xpath获取到标签,然后给标签填值,click等操作,成功获取到js执行后的page。
5.因需要爬的网站挺多,所以将程序抽离成可配置的,可配置的主要内容是网站的入口url,详情页的正则,查询框和按钮等的xpath,是否使用ip代理,要爬取的内容的xpath,基本上可以将可以正常爬取的网站配置进去。
6.其间发现一个网站会让程序进入死循环,那个网站是前后端不分离的,我用webmagic获取到列表页,然后将列表页里的详情页url加到targetUrl里面去,流程是:列表页->详情页->列表页->详情页…,后面就将爬取过程分成两步,第一步先用html访问列表页,然后模拟click将所有的详情页url存到数组,然后再用webmagic统一去访问详情页,问题就解决了。
7.后面将所有的网站爬取过程都分成两大步,第一步用htmlunit将所有的详情页url抓取下来,然后用webmagic去爬详情页抓取我们想要的内容。

微博

微博是最难爬的,爬了两三天都不能迈出第一步–抓取到有内容的page,一开始想爬weibo.com,即pc上的web版微博, 发现都会被拦下来,访问不了,后面发现m.weibo.cn可以爬,而且不用登陆就能查看很多信息,于是决定爬取h5的微博,即m.weibo.cn,html源码可以抓取到,但就是结果不是js执行后的,就是一个html框架,没有内容,尝试了很多方法都不行,用fiddler抓包,请求头设置的一模一样也不行,这微博搞得我很痛苦,还要继续研究。

你可能感兴趣的:(思路分享)