15.1.2 Beautiful Soup
Beautiful Soup是一个小巧而出色的模块,用于解析你在Web上可能遇到的不严谨且格式糟糕的HTML。
Beautiful Soup网站(http://crummy.com/software/BeautifulSoup)称:那个糟糕的网页并非出自你的手笔。你只是想从中提取一些数据。 Beautiful Soup将向你伸出援手。
下载并安装Beautiful Soup易如反掌。与大多数包一样,你可使用pip来完成这种任务。
$ pip install beautifulsoup4
你可能想使用pip进行搜索,看看是否有更新的版本。安装Beautiful Soup,编写从Python JobBoard提取Python职位的程序非常容易,且代码很容易理解,如代码清单15-3所示。这个程序不检查网页的内容,而是在文档结构中导航。
jobs.add('{} ({})'.format(job.a.string, job.a['href']))
print('\n'.join(sorted(jobs, key=str.lower)))
我使用要从中抓取文本的HTML代码实例化BeautifulSoup类,然后用各种机制来提取解析树的不同部分。例如,使用soup.body来获取文档体,再访问其中的第一个section。使用参数'h2'调用返回的对象,这与使用其方法find_all等效——返回其中的所有h2元素。每个h2元素都表示一个职位,而我感兴趣的是它包含的第一个链接job.a。属性string是链接的文本内容,而a['href']为属性href。你肯定注意到了,在代码清单15-3中,我使用了set和sorted(通过将参数key设置为一个函数以忽略大小写)。这些与Beautiful Soup毫无关系,旨在消除重复的职位并按字母顺序打印它们,从而让这个程序更有用。
如果你要抓取(本章后面将讨论的) RSS feed,可使用另一个与Beautiful Soup相关的工具,名为Scrape ‘N’ Feed(http://crummy.com/software/ScrapeNFeed)。
领取专属 10元无门槛券
私享最新 技术干货