python数据采集分析_Python学习教程:关于数据采集和解析的详细讲解

Python学习教程:数据采集和解析

通过上一个章节的讲解,我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,下面我们给出一个爬虫开发相关技术的清单以及这些技术涉及到的标准库和第三方库,稍后我们会一一介绍这些内容。

下载数据 - urllib / requests / aiohttp。

解析数据 - re / lxml / beautifulsoup4 / pyquery。

缓存和持久化 - pymysql / sqlalchemy / peewee/ redis / pymongo。

生成数字签名 - hashlib。

序列化和压缩 - pickle / json / zlib。

调度器 - 多进程(multiprocessing) / 多线程(threading)。

HTML页面

html>

Home

/* 此处省略层叠样式表代码 */

Yoko's Kitchen

  • Home
  • Classes
  • Catering
  • About
  • Contact

 

Bok Choi

Japanese Vegetarian

Five week course in London

A five week introduction to traditional Japanese vegetarian meals, teaching you a selection of rice and noodle dishes.

 

Teriyaki Sauce

Sauces Masterclass

One day workshop

An intensive one-day course looking at how to create the most delicious sauces for use in a range of Japanese cookery.

Popular Recipes

Yakitori (grilled chicken)

Tsukune (minced chicken patties)

Okonomiyaki (savory pancakes)

Mizutaki (chicken stew)

Contact

Yoko's Kitchen

27 Redchurch Street

Shoreditch

London E2 7DP

© 2011 Yoko's Kitchen

// 此处省略JavaScript代码

如果你对上面的代码并不感到陌生,那么你一定知道HTML页面通常由三部分构成,分别是用来承载内容的Tag(标签)、负责渲染页面的CSS(层叠样式表)以及控制交互式行为的JavaScript。通常,我们可以在浏览器的右键菜单中通过“查看网页源代码”的方式获取网页的代码并了解页面的结构;当然,我们也可以通过浏览器提供的开发人员工具来了解更多的信息。

使用requests获取页面

GET请求和POST请求。

URL参数和请求头。

复杂的POST请求(文件上传)。

操作Cookie。

设置代理服务器。

【说明】:关于requests的详细用法可以参考它的官方文档。

页面解析

几种解析方式的比较

说明:BeautifulSoup可选的解析器包括:Python标准库(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。

使用正则表达式解析页面

如果你对正则表达式没有任何的概念,那么推荐先阅读《正则表达式30分钟入门教程》,然后再阅读我们之前讲解在Python中如何使用正则表达式一文。

XPath解析和lxml

XPath是在XML文档中查找信息的一种语法,它使用路径表达式来选取XML文档中的节点或者节点集。这里所说的XPath节点包括元素、属性、文本、命名空间、处理指令、注释、根节点等。

Harry Potter

29.99

Learning XML

39.95

对于上面的XML文件,我们可以用如下所示的XPath语法获取文档中的节点。

在使用XPath语法时,还可以使用XPath中的谓词。

XPath还支持通配符用法,如下所示。

如果要选取多个节点,可以使用如下所示的方法。

【说明】:上面的例子来自于菜鸟教程网站上XPath教程,有兴趣的读者可以自行阅读原文。

当然,如果不理解或者不太熟悉XPath语法,可以在Chrome浏览器中按照如下所示的方法查看元素的XPath语法。

BeautifulSoup的使用

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。

1.遍历文档树

获取标签

获取标签属性

获取标签内容

获取子(孙)节点

获取父节点/祖先节点

获取兄弟节点

2.搜索树节点

find / find_all

select_one / select

【说明】:更多内容可以参考BeautifulSoup的官方文档。

PyQuery的使用

pyquery相当于jQuery的Python实现,可以用于解析HTML网页。

实例 - 获取知乎发现上的问题链接

from urllib.parse import urljoin

import re

import requests

from bs4 import BeautifulSoup

def main():

headers = {'user-agent': 'Baiduspider'}

proxies = {

'http': 'http://122.114.31.177:808'

}

base_url = 'https://www.zhihu.com/'

seed_url = urljoin(base_url, 'explore')

resp = requests.get(seed_url,

headers=headers,

proxies=proxies)

soup = BeautifulSoup(resp.text, 'lxml')

href_regex = re.compile(r'^/question')

link_set = set()

for a_tag in soup.find_all('a', {'href': href_regex}):

if 'href' in a_tag.attrs:

href = a_tag.attrs['href']

full_url = urljoin(base_url, href)

link_set.add(full_url)

print('Total %d question pages found.' % len(link_set))

if __name__ == '__main__':

main()

欢迎朋友们补充交流!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
92讲视频课+16大项目实战+课件源码  为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。      从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。   本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。  二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据分析的尴尬。  四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。  五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值