2017-01-19 2 views
-5

どのようにしてimdb borntodayページから情報を抽出できますか?beautifulsoup imdb borndoday page

私はこの質問を見ましたが、回答はありません。

Webscraping an IMDb page using BeautifulSoup

私はループのロジックを維持する前に、少なくとも1つの要素を見つけようとしています以下のコード

import urllib2 
from bs4 import BeautifulSoup 

test_url='https://m.imdb.com/feature/bornondate' 

url=urllib2.urlopen(test_url) 
html_text=url.read() 

soup=BeautifulSoup(html_text) 


poster=soup.find('a','poster') 
print poster 
print type(poster) 
print type(soup) 
print html_text 
url.close() 

を試してみました。

htmlページコンテンツは以下のとおりです。出力ポスターとタイプ(ポスター)は私に無しです。私がコードにない部分を手伝ってください。

<section class="posters list"> 
<h1>January 18</h1> 

<a href="/name/nm0000126/" class="poster "><img src="https://images-na.ssl-images-amazon.com/images/M/[email protected]_V1._CR0,0,419,618_SX40_SY59.jpg" style="background:url('http://i.media-imdb.com/images/mobile/people-40x59-fade.png')" width="40" height="59"><div class="label"><span class="title">Kevin Costner</span><div class="detail">Actor, "Dances with Wolves"</div></div></a> 

ありがとう、 Phani。

+2

あなたがしようとしているコードを投稿してください。 –

+0

答えを確認してください。それはあなたが探していたものですか? – MYGz

+0

はい、トップ10の俳優だけが欲しいです。私はdryscrapeをインポートするいくつかの問題に直面しているが、あなたが投稿したコードがうまくいくように思える。また、私は、動的コンテンツのHTML抽出はbeautifulsoupでは不可能であることを理解しました。お返事ありがとうございます。 – ppeddi

答えて

0

これは、最初のページにのみアクタを与えます。すべての俳優が必要な場合はseleniumまたは他のライブラリを使用する必要があります。

日付が0dまたはdの場合は、1桁であることを確認してください。

あなたが最初のページに俳優/女優のためのdryscrapeでこのような何かを試すことができます。

import re 
import dryscrape 
from bs4 import BeautifulSoup 
from datetime import datetime 

todays_date = datetime.today().strftime('%B %d') 

test_url='https://m.imdb.com/feature/bornondate' 
sess = dryscrape.Session() 
sess.visit(test_url) 
soup = BeautifulSoup(sess.body()) 
l1 = [a.strip() for a in soup.text.split('\n') if a.strip()] 
idx = l1.index(todays_date) 
l2 = [a.strip() for a in l1[idx+1].split(',')] 
l3 = [re.sub(r'.*"', '',a) for a in l2] 
l4 = [re.sub(r'(Actor|Actress)', r' \1', a) for a in l3] 
l5 = [a for a in l4 if a.endswith('Actor') or a.endswith('Actress')] 
l5 

出力:

[u'Logan Lerman Actor', 
u'Katey Sagal Actress', 
u'Drea de Matteo Actress', 
u'Tippi Hedren Actress', 
u'Jodie Sweetin Actress', 
u'Elizabeth Tulloch Actress', 
u'Marsha Thomason Actress', 
u'Erin Sanders Actress', 
u'Mickey Sumner Actress']