首页 > 编程语言 >python爬虫—学习笔记-2

python爬虫—学习笔记-2

时间:2024-04-10 17:46:37浏览次数:28  
标签:douban python top250 爬虫 笔记 headers url movieName response

python爬虫—学习笔记-2

ps:因为本人近一个月住院,文章为队友所著。

任务

获取豆瓣网站内容

单页获取

网址:https://movie.douban.com/top250

获取网页信息

代码:

import requests


url="https://movie.douban.com/top250"

headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0"}
response=requests.get(url,headers=headers)
print(response.text)

image-20240410172656380

为了方便查看,获取的代码创建一个html网页放进其中。

image-20240410172727354

获取第一页的电影名字

电影名字包含在

<span class="title">([^&nbsp].*?)</span>

这个标签之中,所以需要

image-20240410172805826

import requests
import re

url="https://movie.douban.com/top250"

headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0"}
response=requests.get(url,headers=headers)


#获取电影名字
movieName=re.findall( '<span class="title">([^&nbsp].*?)</span>',response.text)
print(movieName)
#^:意为除了

将电影名字与评分联系起来

image-20240410172847020

多页获取

构建url

首页:https://movie.douban.com/top250

第二页:https://movie.douban.com/top250?start=25&filter=

第三页:https://movie.douban.com/top250?start=50&filter=

………………

最后一页:https://movie.douban.com/top250?start=250&filter=

可以看出其中存在一些关系

https://movie.douban.com/top250?start=‘+25的倍数+‘&filter=

所以url可以这样构建

url="https://movie.douban.com/top250?start=" + str(i) + "&filter="

import requests
import re

headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"}
movieName=[]
score=[]
for i in range(0,250,25):
    url="https://movie.douban.com/top250?start=" + str(i) + "&filter="


    response=requests.get(url,headers=headers)

    movieName+=re.findall('<span class="title">([^&nbsp].*?)</span>',response.text)

    score=score+ re.findall('<span class="rating_num" property="v:average">(.*?)</span>',response.text)

print(movieName)
print(score)

l=[]
for i in range(250):
   l.append((i+1,movieName[i],score[i]))
print(l)

for i in l:
   print(i)

import requests
import re

headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0"}
movieName=[]
score=[]
for i in range(0,250,25):
    url="https://movie.douban.com/top250?start=" + str(i) + "&filter="


    response=requests.get(url,headers=headers)

    movieName+=re.findall('<span class="title">([^&nbsp].*?)</span>',response.text)

    score=score+ re.findall('<span class="rating_num" property="v:average">(.*?)</span>',response.text)

print(movieName)
print(score)

l=[]
for i in range(250):
   l.append((i+1,movieName[i],score[i]))
print(l)

for i in l:
   print(i)

image-20240410173022302

获取网页图片

首先找到图片所在的标签

image-20240410173043580

import requests
import re

url="https://movie.douban.com/top250?start=0&filter="


headers={"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'}
response=requests.get(url,headers=headers)


movieName=re.findall('<span class="title">([^&nbsp].*?)</span>',response.text)

imgurl=re.findall('src="(.*?)" class="">',response.text)

for i in range(25):
    imgres=requests.get(imgurl[i],headers=headers)
    filename="./images/" + movieName[i] + ".jpg"
    with open (filename,mode="wb") as f:
        f.write(imgres.content)

image-20240410173103588

image-20240410173107655

注意:

获取图片时不应太平频繁 , 可以的话适当加上一个获取时间间隔 。

标签:douban,python,top250,爬虫,笔记,headers,url,movieName,response
From: https://www.cnblogs.com/windfengyu/p/18126527

相关文章

  • 2024最新网络安全学习路线+自学笔记(超详细)
    01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有W......
  • 【Python】深入探究:if、elif、else语句如何塑造Python代码的逻辑魅力
    欢迎来CILMY23的博客本篇主题为深入探究:if、elif、else语句如何塑造Python代码的逻辑魅力个人主页:CILMY23-CSDN博客个人专栏系列:Python|C语言|数据结构与算法|C++感谢观看,支持的可以给个一键三连,点赞关注+收藏。 写在前头:本篇博客主要对各种的条件语句进行详......
  • 第 6 章 Gazebo仿真环境搭建(自学二刷笔记)
    6.6.4Gazebo仿真环境搭建到目前为止,我们已经可以将机器人模型显示在Gazebo之中了,但是当前默认情况下,在Gazebo中机器人模型是在emptyworld中,并没有类似于房间、家具、道路、树木...之类的仿真物,如何在Gazebo中创建仿真环境呢?Gazebo中创建仿真实现方式有两种:方式......
  • UE中创建Actor添加组件初始化(UEC++个人学习笔记)
    在ue中创建actorc++类,在actor的.h文件中添加五个组件又由上到下的作用分别为:获取下SceneComponent,用于操作其Transform等相应接口。获取静态模型组件。获取盒子碰撞组件。获取粒子特效组件。获取音频组件。#include"Components/SceneComponent.h"#include"Components......
  • Python环境配置和开发工具
    1.Python环境配置网址:https://www.python.org环境测试1.打开运行框(快捷键win+r),输入cmd,如下:2.打开命令提示符程序,输入python,出现下图:则python环境配置完成。如果出现以下提示:则大概率为python安装时,未进行环境配置(PATH),可选择重新安装python,或了解环境配置相关内容进......
  • 2024.3.30C笔记
    2024.3.30笔记1.转义字符intmain(){printf("abcd\b");//回退一个字符,隐藏\b算一个字符return0;}2.函数调用语句函数调⽤的时候,也会加上分号,就是函数调⽤语句#include<stdio.h>intAdd(intx,inty){returnx+y;}intmain(){printf("hehe\n")......
  • Python包和模块
    Python中的模块和包是用于组织代码的关键构造。它们可以帮助你将代码逻辑划分成可管理的部分,防止命名空间(namesspace)的冲突,并提供分享和重用代码的方式。一、模块模块是一个包含Python代码的文件。模块的名称就是文件的名称(不包含后缀.py)模块可以包含定义的函数,类,变量,也可......
  • python收到MQTT消息后再发http请求
    python收MQTT消息和 发http请求的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2http.py#python3.6importloggingimportrandomimporttimeimportrequests#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER='......
  • python 使用waitress替代flask自带的web服务器
    首席引入依赖安装waitrsspipintsllwaitress 然后在flask程序内引入依赖使用server()函数代替app.run()函数启动时,直接pythonxxx.py即可fromwaitressimportservefromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello_world():return'HelloWor......
  • python paramiko_具有连续标准输出,非一次性读全
    如何完全读取Paramiko通道的缓冲区?要完全读取Paramiko通道的缓冲区,可以使用以下代码:importparamikossh=paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('hostname',username='user',password='pass')stdin,st......