提取维基百科中的所有城市

时间:2014-10-30 07:05:47

标签: python python-2.7 xpath beautifulsoup lxml

http://en.wikipedia.org/wiki/List_of_cities_in_China

我想提取所有城市名称,如下所示:

enter image description here

我使用以下代码(仅提取一个字段),其中xpath是从chrome

复制的
from lxml import html
import requests

page = requests.get('http://en.wikipedia.org/wiki/List_of_cities_in_China')
tree = html.fromstring(page.text)

huabeiTree=tree.xpath('//*[@id="mw-content-text"]/table[3]/tbody/tr[1]/td[1]/a/text()')
print huabeiTree

什么都没有出现。

我的最终目标是提取列表中的所有城市,我可以知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

from lxml import html
import requests

page = requests.get('http://en.wikipedia.org/wiki/List_of_cities_in_China')
tree = html.fromstring(page.text)

huabeiTree=tree.xpath('//table[@class="wikitable sortable"]')
list_of_cities_table = huabeiTree[0] # table[0] is what we need

# Iterate over the table, get all the <tr> nodes
#then get the values of cities with tr[0][0].text
for tr in list_of_cities_table:
    if tr[0].tag == 'td':
        print tr[0][0].text

它列出了656个城市的名单,从北京到诸暨。

P.S。也许这不是那么优雅。可以通过更好的Xpath表达来改进。