CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 漏洞列表
  3. 正文

网站生成系统

2019年4月2日 439点热度 0人点赞 0条评论

菜单 腾讯云
腾讯云首页

云市场

云+社区
备案控制台
云+社区
专栏问答沙龙快讯团队主页开发者手册云学院TVP

找文章 / 找答案 / 找技术大牛
写文章提问登录注册
爬虫入门-打造网站自生成系统(一)
文章来源:企鹅号 - iTesting
iTesting,爱测试,爱分享

爬虫其实不算是新的东西了, 网上也有很多的教程,都很详尽,那么我为什么还要拿出来说呢?因为我发现大多数教材都是教你如何从网络上爬取内容,然后就结束了。 但是我们爬下来的内容是要使用的啊?

这方面的就很少。还记得我之前分享过的

博客开发系列

吗?正好,我们把这两个结合起来,一起来看看,如何用爬虫打造专属自己的自动化博客生成系统。

本系列分为如下模块:

1.介绍爬虫框架scrapy的原理,及简单使用。

2.自动分析爬取的文章,分类并转化格式为适合博客的markdown格式。

3.自动发布博客,并介绍如何绑定域名。

4.每天躺在床上看自己的博客“更新”。

今天我们先看第一个, 爬虫框架Scrapy。

首先,爬虫是什么呢? 爬虫的原理是什么?

爬虫是一个程序,用来获取网站的信息。 爬虫的原理一般是根据一定的分析算法找出用户想要的URL,放到一个队列里,然后按照一定的策略选择进一步要抓取的URL,直到满足停止条件。 然后对所有抓取的网页进行分析,过滤,存储并建立索引,方便后续查询,检索。

什么是scrapy

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

scrapy原理 (此部分为官网文档,及网络摘抄)

Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下(绿线是数据流向):

部分详细说明如下:

一此完整的运行流程如下:

如何安装

入门教程(官网摘取架构各部分作用,个人提供练习)

创建项目

在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:

定义Item

Item 是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。

类似在ORM中做的一样,您可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field 的类属性来定义一个Item。 (如果不了解ORM, 不用担心,您会发现这个步骤非常简单)

首先根据需要从dmoz.org获取到的数据对item进行建模。 我们需要从dmoz中获取名字,url,以及网站的描述。 对此,在item中定义相应的字段。编辑 _myspider 目录中的 items.py 文件:

一开始这看起来可能有点复杂,但是通过定义item, 您可以很方便的使用Scrapy的其他方法。而这些方法需要知道您的item的定义。

编写第一个爬虫(Spider)

Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。

其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容, 提取生成 item 的方法。

为了创建一个Spider,您必须继承 scrapy.Spider 类, 且定义以下三个属性:

name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。

start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。

parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。

以下为我们的第一个Spider代码,保存在 _myspider/spiders 目录下的 mine.py 文件中:

我们要从10tiao.com这个网站爬取首页上的所有公号文章,并按照如下方式保存

start_requests这个请求接收需要爬取的第一个页面,然后交给parse()处理,

注意:

Request中meta参数的作用是传递信息给下一个函数,使用过程可以理解成:把需要传递的信息赋值给这个叫meta的变量,但meta只接受字典类型的赋值,因此要把待传递的信息改成“字典”的形式,即:meta={‘key1’:value1,’key2’:value2}

如果想在下一个函数中取出value1,只需得到上一个函数的meta[‘key1’]即可,因为meta是随着Request产生时传递的,下一个函数得到的Response对象中就会有meta,即response.meta,取value1则是value1=response.meta[‘key1’]

存储结果(Pipeline)

Item pipeline 的主要责任是负责处理 spider 抽取的 Item,主要任务是清理、验证和持久化数据。当页面被 spider 解析后,将被发送到 pipeline,每个 pipeline 的组件都是由一个简单的方法组成的Python类。pipeline 获取Item,执行相应的方法,并确定是否需要在 pipeline中继续执行下一步或是直接丢弃掉不处理。

激活Item Pipeline组件

在settings.py文件中,往ITEM_PIPELINES中添加项目管道的类名,激活项目管道组件

运行爬虫

写在最后

看下我们的运行结果, result.json节选:

是不是很简单?确实简单, 爬虫的爬取,收集信息比较直观,但是爬虫最重要的的问题就是经常被ban,至于如何解决,目前没有一劳永逸的方法,读者朋友们可以网络上搜索解决。

本文未涉及登录问题有些网站需要登录获取authentication token后才能继续爬取(我比较喜欢这个,方便控制), 有两个办法,一个是用requests直接发请求获取后保存使用。第二scrapy貌似提供了登录的方法,这个我还没有研究, 大家可以自行研究。

文末惯例放赞赏码:)

END

关注iTesting

发表于: 2018-06-19
原文链接:https://kuaibao.qq.com/s/20180619G1YAYY00?refer=cp_1026
腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
0
分享

扫描二维码

上一篇:Python零基础入门学习系列(1):jupyter 的使用
下一篇:可以永久激活windows 10的纯净C#工具
同媒体快讯
Python+webdriver一劳永逸解决弹出框识别问题
2019-04-02
git用法总结
2019-04-02
Python算法分享系列-广度优先
2019-04-02
Python算法分享系列-二叉树
2019-04-02
Python算法分享系列-查找,排序,递归
2019-04-02
相关快讯
Scrapy框架的使用之Scrapy爬取新浪微博
2018-06-13
Fiddler小探
2018-05-22
爬虫框架Scrapy的第一个爬虫示例入门教程
2019-04-02
教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
2019-04-02
Webpack 入门
2019-04-02
Jmeter session 和cookie 常用用法汇总笔记
2019-04-02
社区
专栏文章
互动问答
技术沙龙
技术快讯
团队主页
开发者手册
活动
原创分享计划
自媒体分享计划
资源
云学院
技术周刊
社区标签
开发者实验室
关于
社区规范
免责声明
联系我们

扫码关注云+社区

Copyright © 2013-2019
Tencent Cloud. All Rights Reserved.
腾讯云 版权所有 京ICP备11018762号
京公网安备 11010802020287

扫描二维码
0daybank

标签: 暂无
最后更新:2019年4月2日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me