Python网络数据采集1:初见网络爬虫
前言所有代码示例:https://github.com/REMitchell/python-scraping网络数据采集程序:有时称为网络机器人(bots),是一种通过多种手段收集网络数据的方式,不光是通过与API交互的方式。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息。涉及非常广泛的编程技术和手段,比如数据分
前言
所有代码示例:https://github.com/REMitchell/python-scraping
网络数据采集程序:有时称为网络机器人(bots),是一种通过多种手段收集网络数据的方式,不光是通过与API交互的方式。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息。涉及非常广泛的编程技术和手段,比如数据分析、信息安全等。
为什么要做网络数据采集:可以完成传统搜索引擎不能做的事情。设计较好的网络爬虫可以通过采集大量的网站数据,做出飞往波士顿航班价格随时间变化的图表,告诉你买机票的最佳时间。显然,大量的应用场景都会需要这种几乎可以毫无阻碍地获取数据的手段:市场预测、机器语言翻译,甚至医疗诊断,通过对新闻网站、文章以及健康论坛中的数据进行采集和分析,也可以获得很多好处。
创建爬虫
思考“网络爬虫”时通常的想法:
- 通过网站域名获取HTML数据
- 根据目标信息解析数据
- 存储目标信息
- 如果有必要,移动到另一个网页重复这个过程
第一章 初见网络爬虫
网络上如果没有HTML文本格式层、CSS样式层、JavaScript执行层和图像渲染层,咋看起来会有点儿吓人,浏览器为我们做了这些。接下来我们将不通过浏览器的帮助来格式化和理解数据。
1.1、网络连接
from urllib.request import urlopen
html = urlopen("http://pythonscraping.com/pages/page1.html")
print(html.read())
python3 scrapetest.py
它只能读取单个HTML文件
urllib 是 Python 的标准库
1.2、BeautifulSoup简介
from bs4 import BeautifulSoup
运行BeautifulSoup
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://pythonscraping.com/pages/page1.html")
bsObj = BeautifulSoup(html.read()) #BeautifulSoup对象
print(bsObj.h1) #bsObj.html.body.h1 / bsObj.body.h1 / bsObj.html.h1
<h1>An Interesting Title</h1>
可靠的网络连接:网页在服务器上不存在,服务器不存在等时
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
def getTitle(url):
try:
html = urlopen(url)
except HTTPError as e: #确保url成功
return None
try:
bsObj = BeautifulSoup(html.read())
title = bsObj.body.h1
except AttributeError as e: #确保正确读到html中的标签
return None
return title
title = getTitle("http://pythonscraping.com/pages/page1.html")
if title == None:
print("Title could not be found")
else:
print(title)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)