大数据和量化交易我的Python自学之路

Python爬虫笔记一 ——爬取网页题目

2016-11-20  本文已影响173人  ironbeak_owl

爬虫是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)

大家可以看看这个代码,应该很简单。这是最基本爬虫,之后我会再写些更复杂爬虫的笔记。如果有什么建议和想法欢迎交流。

上一篇下一篇

猜你喜欢

热点阅读