from bs4 import BeautifulSoup import requests import re from tqdm import tqdm import openpyxl import time def get_data(): wb = openpyxl.Workbook() sheet = wb.active sheet.append(['中文标题', '英文标题', '发行时间', '电影评分', '评价人数','影片详细链接','图片链接','影片概况','导演名称']) wb.save('data.xlsx') for m in tqdm(range(0,10)): nus=m*25 URL=f"https://movie.douban.com/top250?start={nus}&filter=" Headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'} response = requests.get(url=URL, headers=Headers) if response.status_code!=200: print(f"爬取失败,状态码是{response.status_code}") else: response.encoding = 'utf-8' soup=BeautifulSoup(response.text,'html.parser') label_numbers=soup.select('#content>div>div.article>ol>li') for label_number in range(1,len(label_numbers)+1): a1234=f'#content > div > div.article > ol > li:nth-child({label_number}) ' label1=soup.select(a1234+'> div > div.info > div.hd > a > span:nth-child(1)') label2 = soup.select(a1234+ f'> div > div.info > div.hd > a > span:nth-child(2)') english_label=label2[0].text.replace("/", "").strip() label4 = soup.select(a1234+'> div > div.info > div.bd > p:nth-child(1)') start_time=re.findall(r'\d{4}',label4[0].text) label5 = soup.select(f'#content > div > div.article > ol > li:nth-child({label_number}) > div > div.info > div.bd > div > span.rating_num') label6 = soup.select(f'#content > div > div.article > ol > li:nth-child({label_number}) > div > div.info > div.bd > div > span:nth-child(4)') man_number=label6[0].text.rstrip('人评价') label7 = soup.select(f'#content > div > div.article > ol > li:nth-child({label_number}) > div > div.info > div.hd > a') label8 = soup.select(f'#content > div > div.article > ol > li:nth-child({label_number}) > div > div.pic > a > img') label10 = soup.select( f'#content > div > div.article > ol > li:nth-child({label_number}) > div > div.info > div.bd > p:nth-child(1)') pattern = r'导演: ([\u4e00-\u9fa5]+)' directors = re.findall(pattern, label10[0].text) if directors==[]: director='空' else: director=directors[0] write_excel(label1[0].text,english_label, start_time[0],label5[0].text,man_number ,label7[0]['href'],label8[0]['src'],label10[0].text,director) time.sleep(1) def write_excel(a,b,c,d,e,f,g,h,i): wb=openpyxl.load_workbook('data.xlsx') sheet=wb.active sheet.append([a,b,c,d,e,f,g,h,i]) wb.save('data.xlsx') if __name__ == '__main__': get_data()
111111
最新推荐文章于 2024-11-29 16:46:06 发布