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