2

このページの最初の列 ( http://en.wikipedia.org/wiki/List_of_school_districts_in_Alabama )のすべての要素へのリンクを取得したいと思います。

私は BeautifulSoup を快適に使用できますが、このタスクにはあまり適していないようです (各 tr の内容の最初の子にアクセスしようとしましたが、うまくいきませんでした)。

xpath は通常のパターンに従い、次の式の新しい行ごとに行番号が更新されます。

xpath = '//*[@id="mw-content-text"]/table[1]/tbody/tr[' + str(counter) + ']/td[1]/a'

リンクを取得するために行を反復処理する手段を投稿することで、誰かが私を助けてくれますか?

私はこれらの線に沿って何かを考えていました:

urls = []

while counter < 100:
     urls.append(get the xpath('//*[@id="mw-content-text"]/table[1]/tbody/tr[' + str(counter) + ']/td[1]/a'))
     counter += 1

ありがとう!

4

4 に答える 4

1

これはうまくいくはずです:

from lxml import html

urls = []

parser = html.parse("http://url/to/parse")
for element in parser.xpath(your_xpath_query):
    urls.append(element.attrib['href'])

hrefXPath クエリで属性に直接アクセスすることもできます。たとえば、次のようになります。

for href in parser.xpath("//a/@href"):
    urls.append(href)
于 2013-08-13T19:44:05.640 に答える