2017-12-11 12 views
0

私は自分の娯楽のために、Kayak.co.ukのクエリの結果を見て、Pythonスクリプトを使って出力するスクリプトを作ろうとしています。 urllibを使用して、Webページのクエリ結果(例= https://www.kayak.co.uk/flights/DUB-LAX/2018-06-04/2018-06-25/2adults?sort=bestflight_a)の内容を取得しています。しかし、私は£で価格を見つけるために正規表現が必要です。私はあまり試したことがありません(正規表現はあまりよくありません)。また、urllibはHTMLだけでなくJSも取得しますか?私が必要とする情報の一部がJSに含まれていることを知っています。どんな助けでも大歓迎です。言っWebコンテンツのPython正規表現

def urlRead(url): 
    """Gets and returns the content of the chosen URL""" 
    webpage = urllib.request.urlopen(url) 
    page_contents = webpage.read() 
    return page_contents 
def getPrices(content): 
    content = re.findall(r'£435', content.decode()) 
    print(content) 

def main(): 
    page_contents = '' 
    url = input('Please enter in the kayak url!: ') 
    content = urlRead(url) 
    getPrices(content) 


if __name__ == '__main__': 
    main() 
+1

関連:https://stackoverflow.com/q/1732348 –

+0

私はチェックアウトをお勧めしたい[このページ](HTTP:/ Beautiful Soupはあなたが必要とする何を助けることができるHTMLの解析ライブラリです/ regexr.com)正規表現のヘルプ&実験。 – TheIncorrigible1

+0

Webリクエストは、Webリクエストの初期結果のみを取得します。これはおそらくページのHTMLになります。理論的には、HTMLを解析してJSファイルへの参照を探し出し、ロードすることもできますが、実際にJSを実行して必要な情報を取得する必要があります。おそらくあなたがしたいのは、urllibでこれをやろうとするのではなく、phantomjsのようなヘッドレスブラウザにページをロードすることです – Hamms

答えて

0

@Mr Listerとして、あなたはそれを避けることができれば、正規表現を使用してHTMLを解析しようとしないでください。

は、これは私がこれまで持っているものです。

response = urllib2.urlopen('https://www.google.com/finance?q=NYSE%3AAAPL') 
html = response.read() 
soup = BeautifulSoup(html, "lxml") 
aaplPrice = soup.find(id='price-panel').div.span.span.text 
aaplVar = soup.find(id='price-panel').div.div.span.find_all('span')[1].string.split('(')[1].split(')')[0] 
aapl = aaplPrice + ' ' + aaplVar