前言
以博客園為例,爬取我的博客上首頁的發布時間、標題、摘要,本篇先小試牛刀,先了解下它的強大之處,后面講beautifulsoup4的詳細功能。
一、安裝
1.打開cmd用pip在線安裝beautifulsoup4
>pip install beautifulsoup4
二、解析器
1.我們主要用第一個html.parser,這個是python的標准庫,可以直接用。其它幾個需要安裝對應解析器,
下表列出了主要的解析器,以及它們的優缺點:
三、打印首頁博客的時間
1.這里直接定位不好定位到,可以先定位它的父元素:class="dayTitle"
2.用requests里的get方法打開博客首頁,r.content返回整個html內容,返回類型為string
3.查找所有的class屬性為dayTitle的Tag類
4.獲取當前Tag的標簽為a的string值
四、打印摘要
1.獲取標題方法跟上面一樣,獲取摘要的話,這里不太一樣,這個父類<div class="c_b_p_desc">下多了一個子類a
2.先獲取div這個Tag類,tag的 .contents
屬性可以將tag的子節點以列表的方式輸出
3.因為摘要可以看成是第一個子元素,取下標[0]就可以讀出來
五、參考代碼
# coding:utf-8
from bs4 import BeautifulSoup
import requests
r = requests.get("http://www.cnblogs.com/yoyoketang/")
# 請求首頁后獲取整個html界面
blog = r.content
# print blog
# 用html.parser解析html
soup = BeautifulSoup(blog, "html.parser")
# 獲取所有的class屬性為dayTitle,返回Tag類
times = soup.find_all(class_="dayTitle")
# for i in times:
# print i.a.string # 獲取a標簽的文本
title = soup.find_all(class_="postTitle")
# for i in title:
# print i.a.string
# 讀取摘要內容
descs = soup.find_all(class_="postCon")
# for i in descs:
# # tag的 .contents 屬性可以將tag的子節點以列表的方式輸出
# c = i.div.contents[0] # 取第一個
# print c
for i, j, k in zip(times,title,descs):
print i.a.string
print j.a.string
print k.div.contents[0]
print ""
對python接口自動化有興趣的,可以加python接口自動化QQ群:226296743
也可以關注下我的個人公眾號: