java爬虫抓取动态网页(一下栗子:我对爬与反爬的关系的理解 )

优采云 发布时间: 2021-10-08 07:01

  java爬虫抓取动态网页(一下栗子:我对爬与反爬的关系的理解

)

  写之前先说说我对爬行和反爬关系的理解

  一、什么是爬虫

  Crawler 英文是spliter,意思是蜘蛛。网络爬虫系统的功能是下载网页数据,并对所需数据进行采集。主体是根据初始超链接下载并解析目标页面。这时候有两件事,一是继续往容器中添加相关的超链接,二是解析页面的目标数据,一直循环下去,直到没有url解析出来。举个栗子:我要爬苏宁手机价格数据。爬取的思路是获取第一页的URL作为蜘蛛网的中心点,爬取当前页的手机详情页的价格信息和下一页的URL。并将其添加到容器中,这样只要将url容器存储在循环中,会继续机械执行,直到最后一页没有下一页为止。这是一个扩散的过程。

  

  二、什么是反爬虫,为什么应该是

  反爬虫就是根据请求的某些访问特性进行特殊的处理,比如屏蔽IP、轰炸验证码、返回非对应信息等。

  反爬大概有几个原因

  1、爬虫占了很高的总PV值,相当于一大群僵尸用户访问你的网站。如果不加以控制,只会浪费服务器资源。

  2、有些人因为商业竞争问题必须反爬,防止自己的商业信息被竞争对手批量获取。我看到了一个非常合适的例子。对外卖了两个产品,一个家庭写了一个脚本,自动爬取对手的网站产品价格并与自己的产品价格进行比较,并保持在一定价格以下进行动态波动。买之前一定要了解同行业的价格,所以大家都知道结果。对方很快就发现了这里的连队手脚,一场激烈的攀爬和反攀爬比赛开始了。

  3、还有一些无人认领的爬虫。可能使用它们的人都忘记了它的存在,一直在艰难地爬行。

  三、一些常见的防爬方法

  1、 根据IP访问频率和IP数量上限,用户每秒访问页面数十次或每半秒一次,持续数小时。动作明显,封堵结束。

  2、 页面加载时也有动态访问,而不是静态数据。比如动态加载一些董的价格信息

  3、还有,主页面是异步加载的,嵌套在iframe中,src="about:blank",这个正常下载的页面没有内容

  4、 故意挖洞,在页面上做一些隐藏的链接。如果访问明显是爬虫爬进来的,下一步就是拦截

  5、 后端查询统计并对userAgent进行阈值判断。这个据说容易误伤

  6、 页面展示也有花样,部分价格信息用图片展示。去哪儿网

  7、Cookie 反扒,推荐链接,有很好的介绍入口

  四、 破解前三个

  1.设置ip池周期循环访问

  首先,我们从诸如 Xisui 网站 等代理那里获取一些免费 ip,其次,我们执行无效 ip 过滤。此步骤视情况而定。我个人的做法是Xisci网络上的ip有时可以访问有时无效,所以我只是去掉过滤步骤,然后使用这些代理ip进行实际访问。

<p>public class CsdnReadCount implements PageProcessor {

// IP地址代理库Map

private static Map IPProxyRepository = new HashMap();

private static List keysArray = new ArrayList();

private static int index;

private Site site = Site

.me()

.setDomain("http://www.xicidaili.com/")

.setSleepTime(3000).setUserAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");

//按照顺序获取一个ip

public static HttpHost getRandomProxy() {

// 随机获取host:port,并构建代理对象

String host = keysArray.get(index);

if(index

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线