使用requests与bs4爬取网站①

非结构化数据

没有固定数据格式
如网页资料
必须将数据转换为结构化数据才能取用

数据抽取,转换,储存(Data ETL)

Extract
Transformation
Loading

原始资料———————>ETL脚本——————>结构化数据
Ram Data      ETL Script    Tidy Data

如何处理非结构化数据

网络爬虫->将非结构化数据转化为结构化数据

网络爬虫架构

透过pip安装套件

pip install requests
pip install BeautifulSoup4

Requests

网络资源(URLS)摘取套件
改善Urllib2的缺点,以最简单的方式获取网络资源
可以使用REST操作(POST,PUT,GET,DELETE)存取网络资源

import requests
newsurl = 'http://news.baidu.com/'
res = requests.get(newsurl)
res.encoding = 'utf-8'
print(res.text)

DOM Tree(Document Object Model)

<html>
<body>
<h1 id="title">Hello World</h>
<a href="#" class="link">This is link1</a>
<a href="#link2" class="link">This is link2</a>
</body>
</html>

通过套件beautifulsoup
网页—>DOM Tree
再根据DOM Tree的节点进行操作

BeautifulSoup范例

将网页读进BeautifulSoup中

from bs4 import BeautifulSoup
html_sample = '\
<html>\
<body>\
<h1 id="title">Hello World</h1>\
<a href="#" class="link">This is link1</a>\
<a href="#link2" class="link">This is link2</a>\
</body>\
</html>'
soup = BeautifulSoup(html_sample,'html.parser')
#不加,'html.parser'将产生未使用剖析器的警告
print(soup.text)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • javascript功能插件大集合,写前端的亲们记得收藏 包管理器管理着 javascript 库,并提供读取和打...
    狗狗嗖阅读 817评论 0 1
  • 定义指针变量,如果不赋给它地址,系统会随机给它分配一个地址。 C++标准库 C++ Standard Librar...
    纵我不往矣阅读 305评论 0 1
  • Date: Nov 17-24, 2017 1. 目的 积累Storm为主的流式大数据处理平台对实时数据处理的相关...
    一只很努力爬树的猫阅读 2,208评论 0 4
  • 进程 fork()函数Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用...
    d56eed656c00阅读 336评论 0 0
  • 我双手合十 世界便在我千里之外 拥挤的人群 客套是种伤害 那许多无法深入的情感 逐一凋零 还有那些爱与憎 梦与幻等...
    妖精的瓶子阅读 322评论 0 6