爬虫是Python十分广泛的应用,有人说不会爬虫,就像没有学过Python。这个系列的文章就是爬虫入门笔记,面向的是零基础小白,手把手教你写爬虫哦。
第一步 : 获取网页
爬虫需要从Web中获取大量数据,那么第一步就是得到网页内容。我们准备用urllib模块。这个模块是Python标准库之中的,推荐大家去看一看官方文档。Google python class里也有介绍。
from urllib.request import urlopen
html = urlopen("http://www.pythonscraping.com/pages/page1.html")
print(html.read())
这样就能看到你想爬取的网页的内容了,不过这时输出的格式十分混乱。所以我们需要BeautifulSoup库进行处理。
第二步 : 格式处理
from bs4 import BeautifulSoup
bs_obj = BeautifulSoup(html.read())
print(bs_obj.title)
BeautifulSoup 可以将原本混乱的html格式转化成便于阅读和分析的格式。其中bs_obj.title访问的就是网页下tltle这个标签的内容。bs_obj.tag1.tag2访问的就是tag1下的tag2这个标签。当然如果不存在这个标签,就会报错。现在你就能爬取到网页的title了,是不是很简单,当然这只是个小例子,后面能做的还有很多。
第三步 : 异常处理和可重用
在爬取网页的过程中肯定会遇到意外情况,所以脚本设计时就要考虑这个问题。另外打码的可重用性也是很重要的。
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
def get_title(url):
try:
html = urlopen(url)
except HTTPError as e:
return None
try:
bs_obj = BeautifulSoup(html.read(), "lxml")
title = bs_obj.title
except AttributeError as e:
return None
return title
title = get_title("http://www.pythonscraping.com/pages/page1.html")
if title == None:
print("Title not found")
else:
print(title)
大家可以看看这个代码,应该很简单。这是最基本爬虫,之后我会再写些更复杂爬虫的笔记。如果有什么建议和想法欢迎交流。