爬虫系列:数据采集-阿里云开发者社区

开发者社区> 黄兵的博客> 正文

爬虫系列:数据采集

简介: 上一期只是一个简单的例子,获取了网站的一小部分内容,本期开始讲解需要获取网站的所有文章列表。
+关注继续查看

在上一期,主要讲解了:连接网站与解析 HTML

上一期只是一个简单的例子,获取了网站的一小部分内容,本期开始讲解需要获取网站的所有文章列表。

在开始以前,还是要提醒大家:在网络爬虫的时候,你必须非常谨慎地考虑需要消耗多少网络流量,还要尽力思考能不能让采集目标的服务器负载更低一点。

本次示例采集The ScrapingBee Blog博客的文章。

在做数据采集以前,对网站经行分析,看看代码结构。

需要采集的部分是一个个的小 card 组成,截图如下:

multi-card-2021-10-15-175954.jpg

获取所有卡片的父标签之后,循环单个卡片的内容:

one-item-card-2021-10-15-180036.jpg

单个卡片的内容,就是我们需要的内容,整理完思路之后,开始完成代码:

首先我们还是复用上一期网站连接的代码:

def __init__(self):

self._target_url = 'https://www.scrapingbee.com/blog/'
self._init_connection = connection_util.ProcessConnection()

以上代码定义了一个被采集的网址,同时复用上一期的网站连接代码。

# 连接目标网站,获取内容
get_content = self._init_connection.init_connection(self._target_url)

连接到上面定义的目标网站,并获取网站的内容。

if get_content:
    parent = get_content.findAll("section", {"class": "section-sm"})[0]
    get_row = parent.findAll("div", {"class": "col-lg-12 mb-5 mb-lg-0"})[0]

如果存在内容,对网站内容的标签经行查找,以上是获取所有 card 的父标签,获取具体网站结构可以自己查看网站的完整内容。

    get_child_item = get_row.findAll("div", {"class": "col-md-4 mb-4"})

获取所有小卡片。

    for item in get_child_item:
        # 获取标题文字
        get_title = item.find("a", {"class": "h5 d-block mb-3 post-title"}).get_text()
        # 获取发布时间
        get_release_date = item.find("div", {"class": "mb-3 mt-2"}).findAll("span")[1].get_text()
        # 获取文章描述
        get_description = item.find("p", {"class": "card-text post-description"}).get_text()

之后对获取的小卡片经行遍历,获取每个卡片的文章的标题,发布时间,文章描述。

以上从网站结构开始分析,到具体代码实现,这是爬虫抽取网站内容的一个基本思路。

每个网站不同,结构也会有所不同,所以要针对性的编写代码。

以上代码已托管在 Github,地址:https://github.com/sycct/Scrape_1_1/

文章来源:爬虫识别 - 爬虫系列:数据采集

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
爬虫练习之数据清洗——基于Pandas
本次以51Job上在东莞地区爬取的以Java为关键词的招聘数据 包括salary company time job_name address字段 当我把招聘网站上的数据爬下来的时候,内心是很开心的 爬下来的原始数据 但是! What?! 这是什么数据? 而且还不止一条!!! 待清洗数据 待清洗数据 第一次数据清洗 根据上述截图可以发现,脏数据都包含了xx元/小时以及xx元/天。
2449 0
新零售的路上,人人都是数据分析专家
-- 零售通自助分析平台实战分享 前言 零售通自助分析平台是服务于零售通业务线运营和产品同学,无需SQL无需配置快速分析数据,定制个性化报表的地方。 传统方式进行数据分析需要6步走,门槛高到拦下大部分到初学者:1. 申请数据项目空间;2. 查找对应数据底表并申请权限;3.D2中获取AccessID;4.DI中配置项目空间和AccessID;5.DI中用数据底表配置数据源;6. 开始数据分析
575 0
Python爬虫入门教程 31-100 36氪(36kr)数据抓取 scrapy
1. 36氪(36kr)数据----写在前面 今天抓取一个新闻媒体,36kr的文章内容,也是为后面的数据分析做相应的准备的,预计在12月底,爬虫大概写到50篇案例的时刻,将会迎来一个新的内容,系统的数据分析博文,记得关注哦~ 36kr 让一部分人先看到未来,而你今天要做的事情确实要抓取它的过去。
9249 0
【技术干货】想要高效采集数据到阿里云Elasticsearch,这些方法你知道吗?
本文全面介绍了Elastic Beats、Logstash、语言客户端以及Kibana开发者工具的特性及数据采集到阿里云Elasticsearch(简称ES)服务中的解决方案。帮助您全面了解原理并选择符合自身业务特色的数据采集方案。
2999 0
Python爬虫入门教程 28-100 虎嗅网文章数据抓取 pyspider
1. 虎嗅网文章数据----写在前面 今天继续使用pyspider爬取数据,很不幸,虎嗅资讯网被我选中了,网址为 https://www.huxiu.com/ 爬的就是它的资讯频道,本文章仅供学习交流使用,切勿用作其他用途。
1088 0
基于DataHub采集数据的营销报告分析
本案例是基于阿里云上的DataHub收集营销数据,并通过MaxCompute对营销数据进行分析。下面主要介绍如何用DataHub收集营销数据,以及在MaxCompute中如何对数据进行分析。
1697 0
MetricGraphics.js – 时间序列数据的可视化
  MetricsGraphics.js 是建立在D3的基础上,被用于可视化和布局的时间序列数据进行了优化。它提供以产生一个原则性的,一致的和响应式的方式的图形常见类型的简单方法。该库目前支持折线图,散点图和直方图,以及地毯地块和基本线性回归功能。
688 0
7
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载