用python爬取豆瓣电影TOP250获取电影排名、电影名称、电影别名、电影链接、导演、主演、年份、地点、类型、评分、评价人数、摘要、海报下载地址。

python小白,第一次爬虫,如有不对的地方还请多多指出。

用BeautifulSoup获取电影排名、电影名称、电影别名、电影链接、导演、主演、年份、地点、类型、评分、评价人数、摘要、海报下载地址。

cur_url:每一页的地址,例如:https://movie.douban.com/top250?start=0&filter=

html = requests.get(cur_url)
soup = BeautifulSoup(html.text, "html.parser")

每一个电影都在<li></li>中,就用for循环获取每一个电影的信息。


film_list = soup.find_all("div", class_="item")

for list in film_list:

1.获取电影排名



film_ranking = list.find("div", class_="pic").find('em').text

2.电影名称



film_chinese_name = list.find("span", class_="title").text

3.电影别名

将别名左边的空格和“/”去掉



film_other_name = list.find("span", class_="other").text.strip().lstrip("/").strip()

4.电影链接


film_url = list.find("a").get("href")

5.导演、主演、年份、地点、类型



# 导演/主演/年份/地点/类型  split():拆分   strip():方法用于移除字符串头尾指定的字符(默认为空格)
film_information = list.find("div", class_="bd").find("p").text.strip()
# 以"\n"形式将字符串拆分
film_information_split = film_information.split("\n")
# print(film_information_split)
film_information_split_1 = film_information_split[0]     # 导演和演员的信息
film_information_split_2 = film_information_split[1]     # 年份、地点、类型的信息
# print(film_information_split_1)
# print(film_information_split_2)
# film_information_split_1以"\xa0\xa0\xa0"形式拆分
film_information_1 = film_information_split_1.split("\xa0\xa0\xa0")  # 将导演和演员的信息用"\xa0\xa0\xa0"拆分
# 导演
film_director_1 = film_information_1[0].strip()
film_director = film_director_1.split(":")[1]
# print(film_director)
# 主演
film_actor_1 = film_information_1[1].strip()
if ":" in film_actor_1:
    film_actor = film_actor_1.split(":")[1]
else:
    film_actor = ""
# print(film_actor)

# film_information_split_2以"\"形式拆分
film_information_2 = film_information_split_2.split("/")   # 将年份、地点、类型的信息用"/"进行拆分
# 年份
film_year = film_information_2[0].strip()
# print(film_year)
# 地区
film_area = film_information_2[1].strip()
# print(film_area)
# 类型
film_genre = film_information_2[2].strip()
# print(film_genre)

6.评分



rating = list.find("span", class_="rating_num").text

7.评价人数



find_next_sibling():返回符合条件的后面的第一个tag节点

film_rating_num = list.find("span", class_="rating_num").find_next_sibling().find_next_sibling().text

对评价字段进行拆分,只留下数字

film_comment_num = re.findall('\d{0,}', film_rating_num)[0]

8.摘要



film_quote = list.find("span", class_="inq").text

9.海报下载地址


film_post = list.find("img").get("src")


在列表中添加字典需要使用copy方法。

    列表名.append(字典名.copy())

猜你喜欢

转载自blog.csdn.net/u013044782/article/details/79798909