import requestsfrom bs4 import BeautifulSoup 获取指定url路径的页面def douban_rank250url headers = User-Agent Mozilla50 Windows NT 100; Win64; x64 AppleWebKit53736 KHTML like Gecko Chrome860424019
要将数据保存为Excel格式,可以使用Python中的第三方库pandas来进行操作。首先,需要导入pandas库:
import pandas as pd
然后,在解析页面的函数中,创建一个空的DataFrame来存储数据:
data = pd.DataFrame(columns=['排名', '海报', '片名', '评分', '导演', '主演', '上映时间', '上映地点', '类型', '热门短评'])
接下来,在解析页面元素的代码中,将获取到的数据存入DataFrame中:
获取排名
rank = item.find("em").string
获取海报图片链接
img_src = item.find("img")["src"]
获取片名
movie_title = "" spans = item.find("div", class_="hd").a.find_all("span") for span_content in spans: movie_title += span_content.string.strip()
获取评分和评论数
star = item.find("div", class_="star").find_all("span")[1].string
获取导演、主演、上映时间和上映地点
infos = item.find("div", class_="bd").p.text.strip().split("\n") director = infos[0].strip("导演: ") actors = infos[1].strip("主演: ") release_date = infos[2].strip().split("/")[0].strip() release_location = infos[2].strip().split("/")[1].strip()
获取类型
types = item.find("div", class_="bd").p.find("span", class_="inq").string
获取热门短评
quote = item.find("div", class_="bd").p.find("span", class_="inq").string
将数据存入DataFrame中
data = data.append({'排名': rank, '海报': img_src, '片名': movie_title, '评分': star, '导演': director, '主演': actors, '上映时间': release_date, '上映地点': release_location, '类型': types, '热门短评': quote}, ignore_index=True)
最后,将DataFrame保存为Excel文件:
data.to_excel('douban_rank_250.xlsx', index=False)
完整代码如下所示:
import requests from bs4 import BeautifulSoup import pandas as pd
def douban_rank250(url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"} r = requests.get(url, headers=headers) return r.text
def parse(html): soup = BeautifulSoup(html, "html.parser") items = soup.find_all("div", class_="item") data = pd.DataFrame(columns=['排名', '海报', '片名', '评分', '导演', '主演', '上映时间', '上映地点', '类型', '热门短评']) for item in items: rank = item.find("em").string img_src = item.find("img")["src"] movie_title = "" spans = item.find("div", class_="hd").a.find_all("span") for span_content in spans: movie_title += span_content.string.strip() star = item.find("div", class_="star").find_all("span")[1].string infos = item.find("div", class_="bd").p.text.strip().split("\n") director = infos[0].strip("导演: ") actors = infos[1].strip("主演: ") release_date = infos[2].strip().split("/")[0].strip() release_location = infos[2].strip().split("/")[1].strip() types = item.find("div", class_="bd").p.find("span", class_="inq").string quote = item.find("div", class_="bd").p.find("span", class_="inq").string data = data.append({'排名': rank, '海报': img_src, '片名': movie_title, '评分': star, '导演': director, '主演': actors, '上映时间': release_date, '上映地点': release_location, '类型': types, '热门短评': quote}, ignore_index=True) data.to_excel('douban_rank_250.xlsx', index=False)
url = "https://movie.douban.com/top250" html = douban_rank250(url) parse(html
原文地址: https://www.cveoy.top/t/topic/hJC7 著作权归作者所有。请勿转载和采集!