網頁解析器: 從網頁中提取我們想要的資料的工具
python的幾種網頁解析器:
正規表示式(模糊匹配)
結構化解析:
html.parser
beautifulsoup(第三方外掛程式)
lxml(第三方外掛程式)
網頁解析器之- beautiful soup
首先測試是否安裝beautiful soup4
import bs4
print bs4
如果提示以下表示已經安裝了beautiful soup4 ,不然就要自己安裝了
beautiful soup 語法
#coding:utf8例項**:importbs4
frombs4importbeautifulsoup#根據
html
網頁字串建立
beautifulsoup
物件soup = beautifulsoup(
html_doc, #html
文件字串
'html.parser', #html
解析器from_encoding ='utf8'#html
文件的編碼)#
查詢所有標籤為
a的節點
soup.find_all('a')
#查詢所有標籤為
a,鏈結符合
形式的節點
#查詢所有標籤為
div, class
為abc
,文字為
python
的節點#class
是python
的關鍵字
soup.find_all('div', class_='abc', string ='python')
#得到節點:
python
#獲取查詢到的節點的標籤名稱
node.name
#獲取查詢到的
a節點的
href
屬性node['href']
#獲取查詢到的
a節點的鏈結文字
node.get_text()
#coding:utf8
import bs4
import re
from bs4 import beautifulsoup
html_doc = """
python教程
首頁入門教程
練習題python教程
django教程
seo應用
linux
測試應用
書籍推薦
"""#根據html網頁字串建立beautifulsoup物件
soup = beautifulsoup(
html_doc, #html文件字串
'html.parser', #html解析器
from_encoding = 'utf-8' #html文件的編碼
)print '獲取所有的鏈結'
#查詢所有標籤為a的節點
links = soup.find_all('a')
for link in links:
print link.name, link['href'], link.get_text()
print"獲取指定鏈結"
link_node = soup.find('a', href = '')
print link_node.name, link_node['href'], link_node.get_text()
print"正則匹配"
link_node = soup.find('a', href = re.compile(r"tal"))
print link_node.name, link_node['href'], link_node.get_text()
print"獲取p段落文字"
p_node = soup.find('a',rel="nofollow")
print p_node.name, p_node.get_text()
python 輕量級爬蟲開發2
urllib2 python官方基礎模組 request 第三方包更強大 url urllib2.urlopen url coding utf 8 import urllib2 直接請求 response urllib2.urlopen 獲取狀態碼 print response.getcode 讀取...
python 輕量級爬蟲開發3
採用beautiful外掛程式 建立beautifulsoup物件 from bs4 import beautifulsoup 根據html網頁字串建立beautifulsoup物件 soup beautifulsoup html doc,html文件字串 html.parser html解析器 f...
輕量級爬蟲開發(二)
二 簡單爬蟲架構 動態執行流程 三 url管理器 管理待抓取url集合和已抓取的url集合 目的在於 防止重複和迴圈抓取。url之間往往迴圈指向的,如果不對url進行管理,爬蟲就會不斷的抓取這些url,最糟糕的情況兩個url互相指向,則我們將不停的抓取這兩個url管理器,形成死迴圈。功能 url管理...