over 7 years ago

延續之前抓取 http://blog.marsw.tw 網頁的例子,以下示範抓取該網頁文章的標題

[程式碼]

05_parsing_axes
# encoding: utf-8

import urllib2
from lxml import etree

request = urllib2.Request("http://blog.marsw.tw")
response = urllib2.urlopen(request)
html = response.read()

page = etree.HTML(html)

print "v1-------"
for i in page.xpath(u"//h5/a"):
    print i.text

print "v2-------"
for i in page.xpath(u"//h5/a/text()"):
    print i

print "v3-------"
for i in page.xpath(u"//article/header/h5/a/text()"):
    print i

print "v4-------"
for i in page.xpath(u"//article"):
    print i.xpath(u"descendant::h5/a/text()")[0]

[程式說明]

我們可以從開發人員工具可以看到,網頁文章的標題是在h5下的a的文字,v1、v2兩種寫法都可以
而v4的寫法是配合XPath Axes的概念,
因為一般來說XPath會寫完整的路徑,也就是v3的//article/header/h5/a/text()寫法
但我們在處理網頁中,有些網頁的格式並不是這麼漂亮,就可以透過XPath的父子屬性來寫
v4的寫法是指我將article的所有子孫(descendant)中h5下的a的第1個文字印出
會用descendant而不是child是因為不確定h5是不是就在article底下一層,在不確定階層樹的狀況,就採用descendant

爬蟲系列教學文目錄
爬蟲系列教學文程式碼
安裝Python及Python常用語法可參考 Python - 十分鐘入門

← [爬蟲] Parsing - 抓取網頁所有圖片(lxml) [爬蟲] Parsing - 抓取網頁純文字內文 (lxml) →
 
comments powered by Disqus