2017-07-28 12 views
0

私はかなりPythonに新しいですが、私はPythonとそのモジュールを利用できるかどうか疑問に思っていました。 1ページ目のhrefと2ページ目の最初の段落を取得するにはPythonは1ページ目でHrefリンクを取得し、2ページ目から段落を取得できますか?

Q2:ページ1の同じdivクラスを使用して最初の10個のリンクhrefをスクラップしてから、最初の10個の段落、ループしながら?

答えて

1

はい、私はあなたができるはずだと信じています。

要求とbeautifulsoupのpythonモジュールを検索してみてください。

0

beautifulsoupを使用する代わりに、webbrowserモジュールを使用することもできます。 webbrowserモジュールでは、デフォルトのWebブラウザで開くことができます。また、開くには優先するブラウザを指定することもできます(ただし、デフォルトを使用することをお勧めします)。

SoあなたはそうのようなURLを開くことができます:

import webbrowser 

webbrowser.open_new('https://stackoverflow.com/help/formatting') 

またはこのような:

import webbrowser 

a = webbrowser.get('chrome') #target chrome (e.g) 
a.open('https://www.stackoverflow.com') 

残念ながら、あなただけのURLの最後に(アンカー用)ハッシュタグを貼り付けた場合、ウェブブラウザにはありませんこのように思える。代わりに変数を使用してアンカーを定義し、パラメータとして関数に渡す必要があります。このpage

希望の詳細ウェブブラウザの例があります

def open_anchor(self, anchor): 
     """ Open selected anchor in the default webbrowser 
     """ 
     webbrowser.open(anchor) 

この2つのPythonモジュールがあり

+0

また、https://wiki.python.org/moin/HelpOnLinking#Anchors –

1

役立ちます私はこのために使うでしょう:requestsregular expressions。私はウェブサイトの生のHTMLを取得し、例えば、あなたの段落を取得するために正規表現を使用するように要求を使用します。

import requests, re 
site = requests.get("http://somewebsite.com").text 
paragraphs = re.findall(r"<p>(.*?)</p>", site, re.DOTALL) 
firstPara = paragraphs[0] 
print(firstPara) 

ここでリクエストラインは自明と正規表現で最初<p>タグを探し言うその後、ブラケット平均はのこのビットだけです。の文字数で(.)まで(?)の終了</p>タグです。最後にre.DOTALLは、検索の一部として改行を数えることを意味します。

+0

を参照してください。Joeはコードを試しましたが、リストのインデックスが範囲外です。 firstPara = paragraphs [0] –

+0

これは、 're.findall'がマッチを返さないことを意味します。一致させようとしている生のHTMLへのリンクを送ることができますか?そこに段落タグがあることは確かですか? –

関連する問題