1. 程式人生 > >用python爬取豆瓣電影TOP250獲取電影排名、電影名稱、電影別名、電影連結、導演、主演、年份、地點、型別、評分、評價人數、摘要、海報下載地址。

用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())