python簡單爬取網頁文字操作體會
阿新 • • 發佈:2018-12-06
自上次成功嘗試爬取了靜態頁面的圖片之後,本白又跟著另一篇博文做了一下爬取網頁文字的嘗試。基本程式碼都是來源於該篇博文,本人只是做了輕微修改。
以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標籤中的文字