2016-05-31 86 views
0

我打算fromthe以下网站的HTML 链接提取数据:http://movie.walkerplus.com/list/2015/12/Python 3中刮的HTML数据

HTML的某些部分显示如下:

<dl class="directorList"> 
<dt>監督</dt> 
<dd> 
<a href="/person/209306/" title="">スティーヴ・マーティノ</a> 
</dd> 
</dl> 
<dl class="roleList"> 
<dt>出演キャスト</dt> 
<dd> 
<a href="/person/226530/" title="">鈴木福</a> 
<a href="/person/228506/" title="">芦田愛菜</a> 
<a href="/person/266939/" title="">小林星蘭</a> 
</dd> 

我想所有在这个网站的方向列表数据和出演キャス

如スティーヴ·マーティノ, 铃木福芦田爱菜小林星兰

我的代码显示如下:

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

html = urlopen("http://movie.walkerplus.com/list/2015/12/") 
bsObj_movie = BeautifulSoup(html, "html.parser") 
print(bsObj_movie) 
movie_title = bsObj_movie.findAll({"h3"}) 
movie_description = bsObj_movie.findAll("p", {"class": "clearboth"}) 
movie_directors = bsObj_movie.findAll("dl", {"class": "directorList"}) 
movie_roles = bsObj_movie.findAll("dl", {"class": "roleList"}) 
for description in movie_description: 
    print(description.get_text()) 
for title in movie_title: 
    print(title.get_text()) 
for director in movie_directors: 
print(director.find('a').get_text()) 
for role in movie_roles: 
    print(role.get_text()) 

我有成功的MOVIE_TITLE和movie_description, 但movie_directors和movie_roles显示如下。

监督

セルゲイ·ボドロフ

出演キャスト

铃木福 芦田爱菜 小林星兰

其实,我只是想提取以下的数据,不包括:监督并出演キャスト。我想打印标题,描述,导演和角色,而不仅仅是导演和角色。此外,我想提取这些数据并将其存储到一个包含四列的数据库:标题,说明,导演和角色。

セルゲイ·ボドロフ

铃木福 芦田爱菜 小林星兰

提前感谢!

回答

0

不是每个电影The Royal Opera House Cinema Season 2015/16 Royal Opera "The Marriage of Figaro"第一页上有一个导演,所以我筛选出那些:

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

html = urlopen("http://movie.walkerplus.com/list/2015/12/") 
soup = BeautifulSoup(html, "html.parser") 

data = soup.select("div.movie dl.directorList") 

for d in data: 
    title = d.select_one("a").text 
    description = d.find_previous("p", "clearboth").text 
    cast = ",".join([a.text.strip() for a in d.find_next("dl","roleList").select("dd a")]) 
    director = d.dd.a.text 
    print(title, director, cast, description) 
+0

谢谢您的回答。我想打印标题,描述,导演和角色,而不仅仅是导演和角色。我想提取这些数据并将其存储到一个数据库中,该数据库包含四列:标题,说明,导演和角色。 –