爬虫学习实践(2)——静态网页抓取实践之获取豆瓣top250电影名及信息

文章目录

要求

获取豆瓣电影TOP250所有电影名称及其他信息
网址为https://movie.douban.com/top250
由于我觉得英文名港台名这些没啥用,所以我就没爬了。

思路分析

首先,分析所需方法,可以看出所有电影相关信息是静态的,即所有信息都是由HTML写的,那只需要requests就可以了。
爬虫学习实践(2)——静态网页抓取实践之获取豆瓣top250电影名及信息

其次,获取请求头
爬虫学习实践(2)——静态网页抓取实践之获取豆瓣top250电影名及信息
最后,获取信息所在位置,方便后面的解析
可以看出,所有信息都是在<div class="info">中的;其中,电影名在<span class="title">中,演职表在<p class>中,评分在<div class="star">中。
爬虫学习实践(2)——静态网页抓取实践之获取豆瓣top250电影名及信息
至此,所有准备工作已经完成了,下面便让我们开始快乐编程吧。[finghting]


代码实现

# 静态网页实践
# coding: utf-8

import requests
from bs4 import *
from pandas import *

headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69",
         'Host': "movie.douban.com"}
movie_dic={}
ALLname=[]
ALLstar=[]
ALLinfo=[]
for i in range(10):
    link="https://movie.douban.com/top250?start="+str(i*25)
    r=requests.get(link,headers=headers,timeout=10)
    print("第",str(i+1),"页状态码:",r.status_code)

	#以html.parser来解析
    soup=BeautifulSoup(r.text,"html.parser")
    div_list=soup.find_all("div",class_="info")
    
    for i in div_list:
        name=i.find("div",class_="hd").a.span.text.strip()
        info=i.find("div",class_="bd").p.text.strip()
        info = info.replace("\n", " ").replace("\xa0", " ")
        info =  ' '.join(info.split())
        star=i.find('span',class_="rating_num").text.strip()
        
        ALLname.append(name)
        ALLstar.append(star)
        ALLinfo.append(info)

#保存至excel文件
movie_dic["name"]=ALLname
movie_dic["info"]=ALLinfo
movie_dic["star"]=ALLstar
df=DataFrame(movie_dic)
df.to_excel("data.xlsx")

# print(movie_dic)

结果

这是最终结果的一部分,喜欢看电影的小伙伴有的看了
爬虫学习实践(2)——静态网页抓取实践之获取豆瓣top250电影名及信息

上一篇:聚类算法笔记


下一篇:腾讯云轻量服务器通过Docker搭建外网可访问连接的redis5.x集群