Python 3 抓取 html 数据

问题描述 投票:0回答:1

我打算从以下网站html中提取数据 链接:http://movie.walkerplus.com/list/2015/12/

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>

我想获得这个网站的所有directionList数据和出现キャsu

比如sutiiヴ・マーティノ, 铃木福芦田爱菜小林星兰

我的代码如下所示:

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 如下所示。

监督

セルゲイ・博多罗夫

登场キャsuto

铃木福 芦田爱菜 小林星兰

实际上,我只是想提取以下数据,不包括:监督和出现キャsuto。并且我想打印标题,描述,导演和角色,而不仅仅是导演和角色。此外,我想提取这些数据并将其存储到一个数据库中,该数据库有一个包含四列的表:标题、描述、导演和角色。

セルゲイ・博多罗夫

铃木福 芦田爱菜 小林星兰

提前致谢!

html python-3.x web-scraping beautifulsoup
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.