当前位置: 首页> 科技> 名企 > 疫情第二波感染高峰期_建筑设计方案大全_如何做平台推广_世界军事新闻

疫情第二波感染高峰期_建筑设计方案大全_如何做平台推广_世界军事新闻

时间:2025/7/13 4:50:23来源:https://blog.csdn.net/lou0720/article/details/144333078 浏览次数:0次
疫情第二波感染高峰期_建筑设计方案大全_如何做平台推广_世界军事新闻

爬取豆瓣电影的数据

首先打开"豆瓣电影TOP250"网页:

  • 右击鼠标,找到检查点击,然后再点击网络
  • 向上拉动,找到名称栏中的第一个,点击打开
  • 可以在标头里看到请求URL和请求方式,复制URL(需要用到)
  • 在标头的最下面有"User-Agent",也复制下来(也可以下载pip install fake-userangent库,用别人写好的UA)
    请添加图片描述
    请添加图片描述
    请添加图片描述

确定我们要爬取的内容

我们爬取每个电影的一些信息

请添加图片描述

获取多页的信息

因为豆瓣电影这个页面每一个页面只能展示25个电影,当点击下一页时我们会发现每一页的网址只有25->50->75这样的变化,其他的没有变化,所以变化可以通过for循环来遍历它,从而达到**获取到多页的电影信息 **

在这里插入图片描述
在这里插入图片描述

具体代码如下:

for i in range(0, 250, 25):url = f"https://movie.douban.com/top250?start={i}&filter="

完整代码:

# 豆瓣电影
import requests   # 别人写好的ua  pip install fake_useragent
import fake_useragent
from lxml import etree
import reif __name__ == '__main__':# UA伪装head = {# "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"# 用 import fake_useragent 库里的UA"User-Agent": fake_useragent.UserAgent().random}# 打开一个文件将获取的数据写进去fp = open("./doubanFilm.txt", "w", encoding="utf-8")# 1、url# url = "https://movie.douban.com/top250"# url2 = "https://movie.douban.com/top250?start=25&filter="# url3 = "https://movie.douban.com/top250?start=50&filter="for i in range(0, 250, 25):url = f"https://movie.douban.com/top250?start={i}&filter="# 发送请求response = requests.get(url, headers=head)# 获取想要的数据res_text = response.text# print(res_text)# 数据解析tree = etree.HTML(res_text)# 定位所有的li标签li_list = tree.xpath("//ol[@class='grid_view']/li")for li in li_list:# 获取电影名字film_name = "".join(li.xpath(".//span[@class='title'][1]/text()"))# 获取导演、主演、年份、国家、电影类型director_actor_y_country_type = "".join(li.xpath(".//div[@class='bd']/p[1]/text()"))# 获取评分score = "".join(li.xpath(".//span[@class='rating_num']/text()"))# 获取标签语quote = "".join(li.xpath(".//span[@class='inq']/text()"))# 将获取到的导演、主演、年份、国家、电影类型放到一个新列表里,并去除空格new_str = director_actor_y_country_type.strip()# 将导演从新列表中取出  用正则表达式去匹配director = re.match(r"导演: ([a-zA-Z\u4e00-\u9fa51]+)(.*?)", new_str).group(1)# 取年份y = re.match(r"([\s\S]+?)(\d+)(.*?)", new_str).group(2)# 取国家country = new_str.rsplit("/")[-2].strip()# 取电影类型types = new_str.rsplit("/")[-1].strip()# 因为有些电影没有主演所以将主演用try-except方法做判断,有主演的取出来,没有主演设定为“no”try:actor = re.match(r"(.*?)主演: ([a-zA-Z\u4e00-\u9fa5·]+)(.*?)", new_str).group(2)except Exception as e:actor = "no"# 因为每个数据都用.join的方法转换成了字符串,所以便可以将这些数据相加并用#隔开,便能连在一起,并换行,使得数据更加工整fp.write(film_name + "#" + director + "#" + actor + "#" + y + "#"+ country + "#" + types + "#" + score + "#" + quote + "\n")print(film_name, director, actor, y, country, types, score, quote)fp.close()

结果

在这里插入图片描述

关键字:疫情第二波感染高峰期_建筑设计方案大全_如何做平台推广_世界军事新闻

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: