2016-04-11 16 views
-3

私はウェブサイトスクレーパーで進歩し始めていますが、私は2つの問題にぶつかりました。ここでは、コード最初です:python3&beautifulsoup 4で掻き集めるウェブサイト

import requests 
from bs4 import BeautifulSoup 

r=requests.get("http://www.nytimes.com") 
soup=BeautifulSoup(r.text) 

headlines=soup.find_all(class_="story-heading") 
for headline in headlines: 
print (headline) 

質問

  • なぜfind_all(class_= blahblahblah) だけではなくfind_all(blahblahblah)を使用する必要がありますか? story-headingはそれ自身のクラスですが、find_allを使用してすべてのHTMLを検索して同じ結果を得ることはできません。 BeautifulSoupの注釈では、HTML文書内のすべてのアンカータグを返すfind_all.aが表示されますが、なぜfind_all("story-heading")は同じことをしませんか?

    私が試してみると、HTML内の「ストーリーヘッディング」のすべてのインスタンスを見つけて返すだけなのでしょうか?私はそのタグのすべてを返すようにPythonを取得しようとしています。それは私の最高の推測です。

  • この余分な迷惑メールコードをすべて取得するのはなぜですか?私がストーリーヘッダータグ内のすべてを見せてくれるようにお願いしたいのですか?私は指定しようとしているものよりも多くのテキストを取得しています。

+0

コードをポスト内の通常のテキストではなくコードとしてフォーマットしてください。 – Keatinge

答えて

1

Beautiful SoupではCSSセレクタを使用できます。あなたがそうのような「物語の見出しを」クラスを持つすべての要素を見つけることができる「CSSセレクタ」のためにdoc

を見て:

soup.find_all(".story-heading") 

代わりに、それはあなたがidを探しているなら、単に

soup.find_all("#id-name") 
を行います
関連する問題