1. 程式人生 > >Pyhon網路爬蟲學習筆記—抓取本地網頁(一)

Pyhon網路爬蟲學習筆記—抓取本地網頁(一)

如何用Python爬取本地網頁

 

一、寫出一個簡單的靜態網頁,下面是我隨便寫的一個

網頁原始碼如下


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>大阿瓦達</title>
    <Link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<div class="header">
<body background="image/2.png" style=" background-repeat:no-repeat ;

background-size:100% 100%;

background-attachment: fixed;"></body>
 </div>
>
    <ul class="nav">
        <li><a href="#">Home</a></li>
        <li><a href="#">Site</a></li>
        <li><a href="#">Other</a></li>
    </ul>
</div>
    <div class="main-content">
    <h2>Aritcle</h2>
        <ul class="article">
            <li>
                <img src="image/3.jpg" width="100" height="=90">
                <h3>The bath</h3>
                <p>Say sonmething</p>
            </li>
            <li><img src="image/4.png" width="100" height="=90">
                <h3>The bath</h3>
                <p>Say sonmething</p>
            </li>
        </ul>
    </div>
    <div class="footer">
        <center><p>&copy;mydadadaw</p> </center>
    </div>

</body>
</html>

 由於是靜態網頁,我用的是絕對路徑 ,我就直接存放在桌面的目錄裡:  C:\Users\偉\Desktop\網頁作業\另一個網頁作業\11.html

 

二、解析網頁

 

第一步:使用BeautifulSoup 解析網頁(這個庫是python自帶的

           Soup = BeautigulSoup(html,’lxml’)

(PS:lxml為解析網頁所需要的庫,在python中這個庫是沒有的,所以我們需要進入cmd 進行自主安裝“pip install lxml”,這裡我會在後面在介紹另外四種解析網頁庫,分別是:”html parser”,”lxml HTML”, ”lxml xml”, ”html 51ib”)

 

第二步:掃描抓取的東西在哪

           資源 = Soup.select(‘???’)

 

第三步:從標籤中獲得你要的information(資訊)

           <p>Something</p> (網頁的段落標籤)

                                             tittle = Something

                                             rate = 4.0

 

BeautifulSoup => CSS Select:

一個網頁的基本結構

Xpath與CSS解析網頁的比較

Xpath:誰,在哪,哪幾個 (之後再講)

CSS Select:誰在哪,第幾個,長什麼樣(我們接下來的爬蟲就主要用copy selector找我們需要的內容)

三、寫Python程式碼來爬取我們寫的網頁

這四行程式碼就可以實現我們網頁的爬取

from bs4 import BeautifulSoup
with open('/Users/偉/Desktop/網頁作業/另一個網頁作業/11.html','r') as wb_data:
    Soup = BeautifulSoup(wb_data,'lxml')
    print(Soup)
'''
這裡 第行的語句的意思是開啟我們這個目錄下的這個網頁檔案,r代表只讀
'''

這樣就把我們整個網頁的資料抓取過來了,但是結果並不是我們想要的

我們要將爬取的網頁進行分析

 

還是點開我們寫的網頁,抓取我們需要的圖片

找到圖片img這一行,然後右鍵,copy,找到,copy selector

body > div.main-content > ul > li:nth-child(1) > img,這就是我們所需要抓取的圖片的程式碼

    images = Soup.select('body > div.main-content > ul > li:nth-child(1) > img')

放進pycharm(Python編輯器)中進行抓取

後面再列印我們所抓取的圖片資訊 

    print(images)

但我們放進python中,它會報錯,因為我們沒有按照他的格式進行

 

因此,我們要將程式碼

 

紅色的部分刪除,就可以得到這一類圖片的資訊

 

這裡和我們加上的兩個圖片完全一致

 

然後我們在抓取我們需要的其他資訊,附上全部程式碼

from bs4 import BeautifulSoup

with open('/Users/偉/Desktop/網頁作業/另一個網頁作業/11.html','r') as wb_data:
    Soup = BeautifulSoup(wb_data,'lxml')
    images = Soup.select('body > div.main-content > ul > li > img')
    p = Soup.select('body > div.main-content > ul > li > p')
    tittle = Soup.select('body > div.main-content > ul > li > h3')
    print(images,p,tittle,sep='\n-----\n')

 

這就是我們抓取到的資訊

[<img height="=90" src="image/3.jpg" width="100"/>, <img height="=90" src="image/4.png" width="100"/>]
-----
[<p>Say sonmething</p>, <p>Say sonmething</p>]
-----
[<h3>The bath</h3>, <h3>The bath</h3>]

雖然,這裡抓取到的東西還是會有網頁的程式碼,所以我們要對內容進行篩選

在程式碼中加上判斷結構即可得到我們所需要的內容

 

如有補充,我會在後續加上