专栏首页Ms08067安全实验室【小组作业】Web Crawler

【小组作业】Web Crawler

本文作者:小白虫(Ms08067实验室Python渗透小组成员)

前言

<这里用的scrapy框架,来编写爬虫,官方文档(https://docs.scrapy.org/en/latest/)>

具体功能实现:爬取网站所有链接,探测网页状态,并加随机延迟绕过防护。

1、代码流程

2、代码编写

2.1 item.py编写

这里爬取要目标是爬取网页所有链接。

2.2 link.py 编写

这里默认生成的是要爬取的域名,是在使用scrapy命令行生成爬虫文件时候输入的域名,为了便于指定爬取域名,所以这里改成输入指定域名。然后开始编写parse函数(parse负责处理response并返回处理的数据以及(/或)跟进的URL,该方法及其他的Request回调函数必须返回一个包含 Request、dict或 Item 的可迭代的对象。)

首先xpath(‘//a[@href]’)提取页面内所有链接,之后循环处理url,先调用之前写好的item,再处理每个url,紧接着继续使用当前url,迭代爬取。

2.3 seting.py编写

前面的只要按图上的配置就可以了,最后一个图是就是设置随机延时访问,scrapy自带的功能,只要取消注释就可以了。

还有就是这里scrapy默认只爬取状态码200-300页面,如果想爬取其他的在这里添加。

2.4 pipeline.py编写

这里主要的就是process_item, 前面的init函数就是,打开要写入的url文件。

这里处理写入过程,先检测url是否已经存在,然后再添加url’。

这里是检测网页http状态码,利用requests库来获取网页状态码。

最后,运行代码就可以了。效果图见附录。

小结

第一次写讲解,讲的不好,只是利用scrapy框架实现爬虫的基本功能,后续我会继续改进代码。

github(https://github.com/buddhalikecat),会把代码放上去。

附录:

本文分享自微信公众号 - Ms08067安全实验室(Ms08067_com),作者:徐哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CMSEASY逻辑漏洞思路剖析

    本周分享知识星球里面的cmseasy逻辑漏洞,里面涉及了抓包教程比较简单,适合新手练习。这次跟大家分享其中的思路。

    徐焱
  • 超级隐蔽之后门技巧

    在我们以往的渗透测试中,经常会遇到目标存在杀软,防火墙等防护软件的情况,导致我们的连接不稳定以及连接中断等情况,今天就教大家如何悄无声息的绕过层层防护开启一个愉...

    徐焱
  • 【HTB系列】靶机Irked的渗透测试详解

    IRC(Internet Relay Chat的缩写,“因特网中继聊天”)是一种透过网络的即时聊天方式。其主要用于群体聊天,但同样也可以用于个人对个人的聊天。I...

    徐焱
  • scrapy深入学习----(3)

    我们可以通过scrapy命令行工具来控制Scrapy, 这里我们使用了“Scrapy tool”这么一个词,用来区分他们的子命令,那些通常我们称为 “comma...

    py3study
  • 2017年区块链当中的黑客大事件

    CoinDash ICO攻击 ? 今年早些时候,支付与运输创业公司CoinDash启动了一次ICO,但是很快就因为其用于筹款的ETH地址被黑客攻击而项目终止。 ...

    企鹅号小编
  • 基于投资,通过迁移或者升级到CDP-DC

    Cloudera数据平台(CDP)数据中心版(CDP-DC)是Cloudera数据平台的本地版本。CDP-DC结合了Cloudera Enterprise Da...

    大数据杂货铺
  • 如何安全地集成混合云?

    几乎十分之九的IT决策者认为,对于想要实现数字化业务转型的企业组织来说,混合云能力“很重要”或“很关键”。 ? 2015年,新互联网用户的数量增长了8%,增加0...

    静一
  • 有关事件响应(IR)自动化和协同的几点反思

    有关事件响应(IR)自动化和协同的几点反思 IR(incident response),顾名思义,事件响应,旨在对一些潜在的危机,如数据外泄、DoS或DDoS攻...

    FB客服
  • 最近开发一个较复杂的单页应用的些许感想

    该应用是所谓的前后端分离的: 前端,后端是两个项目。 启动项目时,前端只需起一个静态服务器,后端用命令行起即可。 前端负责页面输出。用了Angular.js...

    Joel
  • 使用noode.js创建一个服务器

    打开gitbash,切换到js文件当前的文件夹,然后输入node index.js(index.js是我的js文件名,反正你们取什么名就输入啥名)

    bamboo

扫码关注云+社区

领取腾讯云代金券