2016-01-10 57 views
2
import requests 
from lxml import html 

page = requests.get(url="http://www.cia.gov/library/publications/the-world-factbook/geos/ch.html") 
tree = html.fromstring(page.content) 

bordering = tree.xpath('//*[@id="wfb_data"]/table/tr[4]/td/ul[3]/li[4]/div[17]/span[2]/text()') 
print bordering 

我使用chrome開發者模式檢索了xPath,但它仍然給我一個空的「邊界」變量。我對可能出錯的事情感到不知所措。這個xPath沒有給出任何結果,爲什麼?

回答

3

首先,你需要使用https,而不是http

https://www.cia.gov/library/publications/the-world-factbook/geos/ch.html 

此外,還有一個更簡單的方式來獲得接壤的數據 - 查找包含spanborder countries文本,並獲得next sibling's文本:

bordering = tree.xpath('//*[@id="wfb_data"]//span[starts-with(., "border countries")]/following-sibling::span')[0] 
print(bordering.text_content()) 

打印:

Afghanistan 91 km, Bhutan 477 km, Burma 2,129 km, India 2,659 km, Kazakhstan 1,765 km, North Korea 1,352 km, Kyrgyzstan 1,063 km, Laos 475 km, Mongolia 4,630 km, Nepal 1,389 km, Pakistan 438 km, Russia (northeast) 4,133 km, Russia (northwest) 46 km, Tajikistan 477 km, Vietnam 1,297 km 
0

請在請求中使用User-Agent進行檢查。

headers ={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0'} 
    page = requests.get(url , headers=headers,timeout=5, verify=False) 

請讓我知道這是否工作。

謝謝。

相關問題