-2

私はあなたの助けを必要としている若いバッタです。私は多くの研究を行ってきましたが、解決策を見つけることができないようです。以下のコードを以下に書きました。実行すると、どのタイトルも取得されません。私の正規表現は正しいと思います。何が問題なのかわからない。ベテランの先生にはおそらく明らかです。前もって感謝します。

from urllib import urlopen

import re

url = urlopen('http://www.realclearpolitics.com/epolls/2012/senate/ma/massachusetts_senate_brown_vs_warren-2093.html#polls').read()

'''
a href="http://multimedia.heraldinteractive.com/misc/umlrvnov2012final.pdf">Title a>
'''

A = 'a href.*pdf">(expression to pull everything) a>' 

B = re.compile(A) 

C = re.findall(B,url)

print C
4

2 に答える 2

3

これは、ここSOでかなり頻繁に発生します。正規表現を使用するのではなく、ドキュメント ツリーを検索/トラバースできる HTML パーサーを使用する必要があります。

私はBeautifulSoupを使用します:

Beautiful Soup は、与えられたものをすべて解析し、ツリー トラバーサルを行います。「すべてのリンクを検索する」、「externalLink クラスのすべてのリンクを検索する」、「URL が「foo.com」に一致するすべてのリンクを検索する、または「太字のテキストを含む表の見出しを検索してから、私にそのテキストを。」

>>> from bs4 import BeautifulSoup
>>> html = ? # insert your raw HTML here
>>> soup = BeautifulSoup(html)
>>> a_tags = soup.find_all("a")
>>> for anchor in a_tags:
>>> ...     print anchor.contents
于 2013-01-03T18:54:35.230 に答える
0

HTML の解析に RegEx を使用しないという他のコメントを繰り返しますが、場合によっては迅速かつ簡単です。あなたの例のHTMLは完全に正しくないようですが、次のようなものを試してみます:

re.findall('href.*?pdf">(.+?)<\/a>', A)
于 2013-01-03T18:59:07.583 に答える