2

ページのソースから一連の URL (Twitter リンク) を見つけて、それらをテキスト ドキュメントのリストに入れようとしています。私が抱えている問題は、urlopen オブジェクトを .readlines() すると、1 つずつ収集する必要がある数十の URL で構成される合計 3 ~ 4 行になることです。これは、これを修正しようとするコードのスニペットです。

page = html.readlines()
for line in page:
       ind_start = line.find('twitter')
       ind_end = line.find('</a>', ind_start+1)
       while ('twitter' in line[ind_start:ind_end]):
           output.write(line[ind_start:ind_end] + "\n")
           ind_start = line.find('twitter', ind_start)
           ind_end  = line.find('</a>', ind_start + 1)

残念ながら、これを使用して URL を抽出することはできません。何かアドバイス?

4

2 に答える 2

3

式を使用してリンクを抽出できます。

from lxml.html import parse

p = parse('http://domain.tld/path')
for link in p.xpath('.//a/@href'):
    if "twitter" in link:
        print link, "match 'twitter'"

を使用することは、より良い方法ではありません: 解析HTMLは 2013 年に解決された問題です。RegEx は、XHTML 自己完結型タグを除く開始タグに一致するを参照してください。

于 2013-01-27T21:22:52.427 に答える
2

BeautifulSoup モジュールを使用できます。

from bs4 import BeautifulSoup

soup = BeautifulSoup('your html')
elements = soup.findAll('a')

for el in elements:
    print el['href']

そうでない場合は、正規表現を使用してください:

import re

expression = re.compile(r'http:\/\/*')
m = expression.search('your string')

if m:
    print 'match found!'

これは<img />タグ内の URL にも一致しますが、私のソリューションを簡単に微調整して、<a />タグ内の URL のみを見つけることができます

于 2013-01-27T20:46:51.227 に答える