码迷,mamicode.com
首页 > 编程语言 > 详细

python爬虫--解析网页几种方法之BeautifulSoup

时间:2017-10-02 21:33:40      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:XML   UI   sim   i+1   工作   c语言   网页   port   htm   

 

 

一.解析器概述

soup=BeautifulSoup(response.body)

对网页进行析取时,并未规定解析器,此时使用的是python内部默认的解析器“html.parser”。

  解析器是什么呢? BeautifulSoup做的工作就是对html标签进行解释和分类,不同的解析器对相同html标签会做出不同解释。

  举个官方文档上的例子:

BeautifulSoup("<a></p>", "lxml")
# <html><body><a></a></body></html>
BeautifulSoup("<a></p>", "html5lib")
# <html><head></head><body><a><p></p></a></body></html>
BeautifulSoup("<a></p>", "html.parser")
# <a></a>

  官方文档上多次提到推荐使用"lxml"和"html5lib"解析器,因为默认的"html.parser"自动补全标签的功能很差,经常会出问题。

二、使用BeautifulSoup抓取新闻网站新闻标题。

import requests
from bs4 import BeautifulSoup
link = "http://tuijian.hao123.com/finance"
headers = {User-Agent : Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6}
r = requests.get(link, headers= headers)
soup = BeautifulSoup(r.text,"html.parser")
first_title = soup.find("div", class_="box-text").text 
print ("第一篇文章的标题是:", first_title)
title_list = soup.find_all("div", class_="box-text")
for i in range(len(title_list)):
    title = title_list[i].text.strip()
    print (第 %s 篇文章的标题是:%s %(i+1, title))

技术分享

find_all找到所有结果,结果是一个列表。用一个循环,把标题列出。

 
解析器使用方法优势劣势
Python标准库 BeautifulSoup(markup, “html.parser”)
  • Python的内置标准库
  • 执行速度适中
  • 文档容错能力强
  • Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup, “lxml”)
  • 速度快
  • 文档容错能力强
  • 需要安装C语言库
lxml XML 解析器 BeautifulSoup(markup, [“lxml”, “xml”])BeautifulSoup(markup, “xml”)
  • 速度快
  • 唯一支持XML的解析器
  • 需要安装C语言库
html5lib BeautifulSoup(markup, “html5lib”)
  • 最好的容错性
  • 以浏览器的方式解析文档
  • 生成HTML5格式的文档
  • 速度慢

python爬虫--解析网页几种方法之BeautifulSoup

标签:XML   UI   sim   i+1   工作   c语言   网页   port   htm   

原文地址:http://www.cnblogs.com/leon507/p/7622444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!