2017-10-12 6 views
2

私は、techcrunch.comのローカルアーカイブからのWebスクレイピングです。私は正規表現を使って各記事のすべての見出しを並べ替えていますが、私の出力は最後の出現として残ります。Python-最後の出現を出力する正規表現[HTML Scraping]

def extractNews(): 
selection = listbox.curselection() 

if selection == (0,): 
    # Read the webpage: 
    response = urlopen("file:///E:/University/IFB104/InternetArchive/Archives/Sun,%20October%201st,%202017.html") 
    html = response.read() 

    match = findall((r'<h2 class="post-title"><a href="(.*?)".*>(.*)</a></h2>'), str(html)) # use [-2] for position after) 


    if match: 
     for link, title in match: 
      variable = "%s" % (title) 


    print(variable) 

と電流出力が

Heetchでは、そのridesharingサービス下の画像に見られるように、全体のWebページの最後の見出しである

に再起動するように$ 12M(1200万ドル)を発生させます(最後の出現)

ウェブサイト/画像は thisのように見え、各記事ブロックは見出しのために同じコードのS:それはこの最後の試合になるし続ける理由

<h2 class="post-title"><a href="https://web.archive.org/web/20171001000310/https://techcrunch.com/2017/09/29/heetch-raises-12-million-to-reboot-its-ride-sharing-service/" data-omni-sm="gbl_river_headline,20">Heetch raises $12 million to reboot its ridesharing service</a></h2>

私が見ることができません。私はhttps://regex101.com/のようなウェブサイトを通してそれを走らせて、それは私のプログラムで出力されていないものが1つしかないことを私に伝えます。どんな助けでも大歓迎です。

EDIT:.htmlファイルに書き込むときに、一致する各結果を異なる<h1></h1>タグの間に別々に表示する方法を知っている人は、それはかなり意味します:)これが正しいかどうかわかりませんが、参照されている位置/マッチについても[ - #]を使用しますか?

答えて

0

正規表現は問題ありませんが、ここでは問題がループしています。

if match: 
for link, title in match: 
    variable = "%s" % (title) 

各反復で変数が上書きされます。そのため、ループの最後の反復に対する値のみが表示されます。

あなたはこれらの線に沿って何かをすることができます:

if match: 
variableList = [] 
for link, title in match: 
    variable = "%s" % (title) 
    variableList.append(variable) 

print variableList 

はまた、一般的に、私は(famous answerあたりなど)HTMLを解析するために正規表現を使用しないことをお勧めします。

あなたがまだBeautifulSoupに慣れていない場合は、そうしなければなりません。ここでは、あなたのHTMLページからすべてのh2のポストタイトルを掘り出すBeautifulSoupを使用して非正規表現のソリューションです。

from bs4 import BeautifulSoup 
soup = BeautifulSoup(html, "html.parser") 
soup.findAll('h2', {'class':'post-title'}) 
+0

ありがとうございました。この回答は完璧です!リストをするとは思わなかった。私は外部ライブラリを使用することはできませんが、美しいスープを使っていました。 – mattappdev

関連する問題