python爬蟲beautifulsoup4系列1


前言

以博客園為例,爬取我的博客上首頁的發布時間、標題、摘要,本篇先小試牛刀,先了解下它的強大之處,后面講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

也可以關注下我的個人公眾號:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM