over 7 years ago
延續之前抓取 http://blog.marsw.tw 網頁的例子,以下示範抓取該網頁文章的標題
[程式碼]
# 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 - 十分鐘入門