1. 程式人生 > >python簡單爬取網頁文字操作體會

python簡單爬取網頁文字操作體會

自上次成功嘗試爬取了靜態頁面的圖片之後,本白又跟著另一篇博文做了一下爬取網頁文字的嘗試。基本程式碼都是來源於該篇博文,本人只是做了輕微修改。

簡單的實現爬蟲爬取網頁文字和圖片

以python3為背景,這裡還是先定義一個讀取html頁面資訊的函式:

import urllib.request

def getHtml(url):
    page = urllib.request.urlopen(url)  #開啟url地址
    html = page.read().decode('utf-8')  #讀取html頁面資料
    return html

下面定義了一個獲取網頁文字的函式

def getWord(html):
    bs = BeautifulSoup(html, "html.parser") #例項化物件
    namelist = bs.findAll("a")    #獲取a標籤
    return namelist

這裡,關於BeautifulSoup的用法見:BeautifulSoup基本用法總結
由於該庫是第三方庫,因此需要進行另外安裝python3實現網路爬蟲(2)–BeautifulSoup使用(1)
這是一個系列教程,有興趣的同學可以參考,傳送門 陌上行走

BeautifulSoup(html,               #html文字字串
"html.parser", #html解析器,也可用lxml等解析器, #見上述“基本用法”連結 from_encoding = 'utf8') #html文件的編碼

在該getword()函式中,findAll()函式是BeautifulSoup的內建函式,用法可參見上述連結。

一定要注意,這裡是findAll, 不是findall。因為本白當時就是在這裡出錯許久,然鵝找不出原因。

主要函式介紹完了,下面就是怎麼呼叫了

url = "http://toutiao.sogou.com/guonei.html"
html = getHtml(url) namelist = getWord(html) for name in namelist: print(name.get_text()) #獲取a標籤中的文字

這裡的namelist是一個由<a>標籤組成的列表,get_text()就是獲取每一個<a>標籤的文字內容。


下面是完整程式碼

import urllib.request
import re
from bs4 import BeautifulSoup

def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read().decode('utf-8')
    return html

def getWord(html):
    bs = BeautifulSoup(html, "html.parser") #例項化物件
    namelist = bs.findAll("a")
    return namelist

url = "http://toutiao.sogou.com/guonei.html"
html = getHtml(url)
namelist = getWord(html)

for name in namelist:
    print(name.get_text())      #獲取a標籤中的文字