1
これにはいくつか大きなスレッドがありますが(この点のいくつかは私がこの点まで助けてくれました)、なぜ私のプログラムが動作していないのか分かりません。ウェブスクレイピング|美しいスープ|構文解析テーブル
問題:プログラムは機能しますが、すべてのテーブル行をループする必要がある場合は最初の行が返されているようです。私が正しいのPython 3.5
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "http://www.the-numbers.com/movies/year/2006"
r = requests.get(url)
soup = BeautifulSoup(r.content)
data = []
for table_row in soup.select("table"):
cells = table_row.find_all(['td'])
release_date = cells[0].text.strip()
movie_name = cells[2].text.strip()
genre_name = cells[3].text.strip()
production_budget = cells[4].text.strip()
box_office = cells[5].text.strip()
movie = {"Release_Date" : release_date,
"Movie_Name" : movie_name,
"Genre" : genre_name,
"Production_Budget" : production_budget,
"Box_Office" : box_office}
data.append(movie)
print (release_date, movie_name, genre_name, production_budget, box_office)
これは1月を返し、2006ブラッドレインアクション$ 25,000,000 $ 2405420を使用していますが、私は、テーブル内の他のすべての行を必要とする
。
この問題を解決するのが簡単な場合は、これをPandas DataFrameに取得することが次のステップになります(ただし、レスポンスでは必要ありません)。
ご協力いただければ幸いです。
これは完璧で、まさに私が望んでいたが。どうもありがとうございました。好奇心のために、私の元のコードが最初の行だけを返す理由を知っていますか? – AdrianC
テーブルが1つだけなので、テーブルではなくtd要素にループが必要だと思います。 – jezrael
それは完璧です - 私を助けてくれてありがとう。非常に感謝し、それは完全に働いた。問題解決済み:) – AdrianC