云端内容采集(如何用Python做爬虫,使用轻量级爬虫框架是很好的选择 )

优采云 发布时间: 2021-09-17 05:17

  云端内容采集(如何用Python做爬虫,使用轻量级爬虫框架是很好的选择

)

  在这个“大数据”和“人工智能”的时代,数据分析和挖掘(如爬虫)可以说是互联网从业者必备的技能。如果您想使用Python作为爬虫程序,那么使用scratch框架是一个不错的选择

  这一次,我带着我们的研发工程师hekko,他喜欢(盲目地)谈论Ganan technology,谈论使用轻量级爬虫框架sweep处理数据采集的基本方法。基本上每个人都会。下面,走~

  一、scrapy导言

  Scratch是一套用Python编写的异步爬虫框架。它是基于twisted实现的,并在Linux/Windows/MacOS等多种环境中运行。它具有速度快、可扩展性强、使用方便等特点。即使是新手也可以快速掌握和编写所需的爬虫程序。Scratch可以在本地运行,也可以部署到云上,以实现真正的生产级数据采集系统

  我们使用一个示例来学习如何使用scratch从网络采集采集数据。“博客公园”是一个全面的技术信息网站,我们这次的任务是采集to网站MySQLcategory/cat/MySQL/下所有文章的标题、摘要、发布日期和阅读量共有4个字段。最终结果是一个收录所有四个字段的文本文件。如图所示:

  

  最终数据如下。每条记录有四行,即标题、阅读量、发布时间和文章摘要:

  

  二、安装扫掠

  让我们看看如何安装扫描。首先,系统中必须有Python和Pip。本文采用了最常见的方法Python2.7.5以版本为例。Pip是一个python包管理工具。一般来说,它将默认安装在Linux系统中。在命令行中输入并执行以下命令:

  sudo pip install scrapy -i http://pypi.douban.com/simple –trusted-host=pypi.douban.com

  PIP将从豆瓣软件源下载并安装脚本,所有相关软件包将自动下载并安装。“Sudo”是指以超级用户的权限执行此命令。在完成所有进度条后,如果提示类似于“已成功安装twisted,scratch…”,则表示安装成功

  三、scrapy交互环境

  同时,scratch还提供了一个交互shell,让我们可以轻松测试解析规则。scratch安装成功后,在命令行中输入scratch shell,启动scratch的交互环境。scratch shell的提示大于三个符号>>,表示我们可以eive命令。首先,我们使用fetch()方法获取主页的内容:

  >>> fetch( “https://www.cnblogs.com/cate/mysql/” )

  如果屏幕上有以下输出,则表示已获取网页内容

  2017-09-04 07:46:55 [scrapy.core.engine] INFO: Spider opened

2017-09-04 07:46:55 [scrapy.core.engine] DEBUG: Crawled (200)

(referer: None)

  获取的响应将保存在响应对象中。对象的status属性表示HTTP响应状态,正常情况下为200

  >>> print response.status

200

  text属性表示返回的内容数据,可以从中解析所需的内容

  >>> print response.text

u'\r\n\r\n\r\n

\r\n

\r\n

\r\n

MySQL – \u7f51\u7ad9\u5206\u7c7b – \u535a\u5ba2\u56ed\r\n

  我们可以看到有很多凌乱的HTML代码,所以我们无法直观地找到我们需要的数据。此时,我们可以通过浏览器的“开发者工具”获取指定数据的DOM路径。在用浏览器打开网页/cat/MySQL/后,按F12启动开发者工具,快速定位指定内容

  

  您可以看到,我们需要的四个字段都位于/body/div(id=“wrapper”)/div(id=“main”)/div(id=“post\u list”)/div(class=“post\u item”)/div(class=“post\u item\u body”)/下,每个“post”item\u body包括文章的标题、摘要、发布日期和阅读量文章.让我们先把所有的“帖子”都拿出来然后从中分析每篇文章文章的四个字段

  >>> post_item_body = response.xpath( “//div[@id=’wrapper’]/div[@id=’main’]/div[@id=’post_list’]/div[@class=’post_item’]/div[@class=’post_item_body’]” )

>>> len( post_item_body )

20

  XPath响应方法可以使用XPath解析器获取DOM数据。有关XPath语法,请参阅官方网站文档。您可以看到,我们在主页uItem_uBody上发布了所有20篇文章文章。那么如何从每篇文章文章中提取这四个字段呢@

  我们以第一篇文章文章为例,以第一篇文章的第一项正文为例:

  >>> first_article = post_item_body[ 0 ]

  body节点下H3/A中post_uuItem_uuuuuuuu中的Title,XPath方法中的text()用于提取当前节点的文本uFirst()和strip()提取XPath表达式中的节点,并过滤掉前后的空格和回车:

  >>> article_title = first_article.xpath( “h3/a/text()” ).extract_first().strip()

>>> print article_title

Mysql之表的操作与索引操作

然后用类似的方式提取出文章摘要:

>>> article_summary = first_article.xpath( “p[@class=’post_item_summary’]/text()” ).extract_first().strip()

>>> print article_summary

表的操作: 1.表的创建: create table if not exists table_name(字段定义); 例子: create table if not exists user(id int auto_increment, uname varchar(20), address varch …

  提取post_uuItem_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

  >>> post_date = first_article.xpath( “div[@class=’post_item_foot’]/text()” ).extract()[ 1 ].split( “发布于” )[ 1 ].strip()

>>> print post_date

2017-09-03 18:13

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线