首页 > 编程语言 >Python爬虫--2

Python爬虫--2

时间:2024-03-24 22:15:26浏览次数:16  
标签:headers Python 爬虫 -- url print re movieName response

本节笔记
获取豆瓣网站内容

记录文件创建时间
文件→设置→编辑器→文件和代码模板中找到Python Script
在输入界面输入
"#日期:${DATE}
"#文件:${NAME}

新建一个Python文件,显示了此文件创建时间和文件名字

一.单页获取

1.获取电影名字

网页URL: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) 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)
print(response.text)

方便查看网页代码,我们新建一个HTML文件,将获取到的网页粘贴到HTML文件中

拖动HTML1文件到另一边,方便查看

导入正则表达式,找到含有电影名字的代码,复制代码,将中间名字改为正则表达式语法任意字符"(.*?)",运行获取电影名字,发现还有同样出现了电影和英文名字和空格字符

我们只获取中文,使用正则表达式中“除了”的语法

  • [^ ]除了的意思--eg:[^&nbsp]
# 日期:2024/3/22
# 文件:spider1
import requests
import re

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

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)

print(movieName)

2.获取电影名字和电影评分

找到含有评分的代码,复制,按照上面方法替换

# 日期:2024/3/22
# 文件:spider1
import requests
import re

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

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)

#获取电影评分
score=re.findall(' <span class="rating_num" property="v:average">(.*?)</span>',response.text)

print(movieName)
print(score)

列出方式:

(1)分别列出

(2)以元组方式列出

有25部电影,所以range()有25个,range(25)不包括25,但是以下用了i+1,所以数字排序是1-25

(3)基于元组排列方式列出

# 日期:2024/3/22
# 文件:spider1
import requests
import re

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

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)

#获取电影评分
score=re.findall(' <span class="rating_num" property="v:average">(.*?)</span>',response.text)

#print(movieName)
#print(score)

l=[]         #创建空元组
#元组方式列出
for i in range(25):
    l.append((i+1,movieName[i],score[i])) #设置变量,添加序号
print(l)
#基于元组排列方式列出
for i in l:
   print(i)

二.多页获取

只需更改单页获取的几个地方:多页的url和请求的数据
创建电影名字和电影评分的空置,构造url
先来查看几页网页的url
第二页

第三页

第二十五页

第一页

从上面来看,都是基于"https://movie.douban.com/top250?start=(从0开始每次增加25)&filter="
构造url:url="https://movie.douban.com/top250?start=" + str(i) + "&filter="

将数据更改为循环形式(i=i+1,不知道怎么表达)

因为这次请求的数据有250个,把输出结束值改为250

运行

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=[]
#构造url
for i in range(0,250,25):   #range[开始,结束,步长]
    url="https://movie.douban.com/top250?start=" + str(i) + "&filter=" #"25"或者str(25),25为数字,"+"是连接字符串

#发送请求
    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)

三.获取电影图片并以电影名字命名

要获取图片,到文件下创建一个文件夹

调试查看

标签:headers,Python,爬虫,--,url,print,re,movieName,response
From: https://www.cnblogs.com/Menq/p/18088196

相关文章

  • Python 中的抽象类和接口类
    【抽象类】抽象类是一个特殊的类,只能被继承,不能被实例化。它主要用于作为其他类的基类或模板。抽象类可以包含抽象方法和具体方法。在抽象类中定义的抽象方法必须在子类中进行实现。fromabcimportabstractmethod,ABCMetaclassFruit(metaclass=ABCMeta):@abstractme......
  • git安装与常用命令的使用
    1.git介绍Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。LinusTorvalds为了帮助管理Linux内核开发而开发了Git,作为替代BitKeeper的过渡方案。Git的主要特点如下:分布式:与传统的集中式版本控制系统不同,Git是一种分布式系......
  • 在域环境下对账户的操作
    1.安装windowsserver2022、Windows10X64的操作环境,这文是在msdn下载的2.修改两机的IP与关闭防火墙,下面我们用2022的192.168.7.128,ping2010的192.168.7.129,显然两机间是能相互通讯的3.在2022上安装ActiveDirectory域服务4.修改2022的计算机名为ruantianyou2022并重启虚拟......
  • 活动目录
    ......
  • aida64
    目录aida64记录aida64.exe程序信息IDRTForm_EnterProductKey_UpdateScreencheck_F85B98pyaida64记录最近换了电脑,微星主板带了aida64程序,结果只能试用60天0.0aida64.exe程序信息32位程序,编译器:BorlandDelphi(7)[-]IDRDelphi程序直接祭出大杀器IDR定位注册窗口和注......
  • 使用互斥量保护共享数据
    C++中通过实例化std::mutex创建互斥量,通过调用成员函数lock()进行上锁,unlock()进行解锁。不过,不推荐实践中直接去调用成员函数,因为调用成员函数就意味着,必须记住在每个函数出口都要去调用unlock(),也包括异常的情况。C++标准库为互斥量提供了一个RAII语法的模板类std::......
  • Redis
    RedisRedis常规八股(Rediscommoninterviewquestionsandconcepts):Redis是什么?(WhatisRedis?):Redis是一个开源的内存数据存储系统,可以用作数据库、缓存和消息中间件。Redis的特点是什么?(WhatarethefeaturesofRedis?):Redis具有高性能、支持多种数据结构、提供持久化选项......
  • linux时间设置
    1.检查当前时区date---显示当前系统时间和日期,格式包括星期几、月份、日期、时间和时区。ortimedatectl---更多的时间和日期管理功能,包括显示当前时间和日期、时区信息、系统启动时间等。2.设置时区为上海/北京时间:sudotimedatectlset-timezoneAsia/Shanghai或者......
  • MySQL
    MySQL讲讲mysql的索引为什么要用B+树?B+树为什么更矮胖?有序性:B+树是一种有序的树形结构,可以快速定位和范围查询数据。在B+树中,所有的叶子节点都按照键值的大小顺序连接在一起,这使得范围查询变得高效。同时,有序性也使得B+树在范围查询、排序和分组等操作上更加高效。平衡性:B......
  • 大语言模型资料汇总
    社区/模型下载ModelScope魔搭社区HuggingFace微调https://github.com/modelscope/swifthttps://github.com/hiyouga/LLaMA-Factoryhttps://huggingface.co/docs/peft/index模型部署https://github.com/xorbitsai/inference模型分发https://github.com/songquanpeng/on......