Python爬虫实战第一例【一】

news/2024/7/19 10:11:34 标签: python, 爬虫, 开发语言

前情提要

今天我们开始更新Python爬虫实战例子,该系列预计会更很多很多期,因为实在有太多了!!

同样作为新人0,作者尽量在自己完全理解的基础上尽可能通俗易懂的讲解给大家,还望大家多多支持!

好了废话不多说,我们开始吧!

PS:对于该系列,你应该具备一定的计算机网络基础知识Python基础知识requests库知识JSON知识

爬取豆瓣排行榜并提取评分

目标网址:豆瓣电影排行榜

第一步:Google开发者工具

使用Google开发者工具,可以右键页面空白处再点击“检查”即可。

 按照图片指示,依次点击两处。

再在排行榜里随便选一个,这里我选择:“喜剧”。

点击后可以看到开发者工具出现了下方两个文件,我们点击最后一个:

注意我们表头里面画红线的,就是我们后面需要的URL。

我们再往下拉,找到我们的浏览器配置【User-Agent】(爬虫用的,很重要

 我们再点击载荷,查看我们的params参数:

可以看到里面有很多东西,虽然英语我们都懂,但是具体的含义我们不懂,那该怎么办呢?

不用急,这时候我们滑动鼠标滚轮将浏览器页面下滑,可以看到多了很多一摸一样的文件,我们再次随意打开一个:

 注意到,当我们鼠标下滑大概20个电影后,就会出现一个新的文件,而且文件中的载荷除了“start”这一项不同以外,其它的都相同,由此可以确定,start是“电影开始的序号”,limit是"每一个文件可以承载多少个电影"。

第二步:编写代码

在这里,我先给出一些配置代码:

import requests
import json
#此处的url就是上面我们找到的url
url = "https://movie.douban.com/j/chart/top_list"
#这里的parmas参数对应的是我们找到的载荷,这里我设置从0开始,一共爬取200个电影
params = {
    "type":"24",
    "interval_id":"100:90",
    "action":"",
    "start": "0",
    "limit":"200"
}
#这里的headers头我们设置浏览器配置,用来反爬虫
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"
}

 注意到上面的配置代码在我们第一步基本都已经找到了,下面我们来编写爬取代码:

#创建一个get请求
response = requests.get(url=url,params=params,headers=headers)
#json方法用来提取get回答中的json格式的内容
content = response.json()
print(content)

 打印结果为:

可以看到数据非常的多且乱,如果这样看的话会死掉的,为此我们需要开始分析数据,改造成我们人类可以阅读的格式

 

#查看content的类型是list【列表】
print(type(content))
#使用json的dumps方法将列表中的第一个元素切换为json格式,并且使用indent等参数变成便于阅读的格式
print(json.dumps(content[0],indent=4,ensure_ascii=False,separators=(",",": ")))

 打印结果为:

 可以看到"title"跟"score"两个键对应的内容正好是电影名字跟得分,我们只需要这两项即可,所以我们要想办法把这两项分离出来:

#使用with语句打开文件
with open("豆瓣排行榜.txt","w",encoding="utf-8") as f:
     for item in content:
        #对每个item单独提取出title和score两个键
         title = item["title"]
         score = item["score"]
        #对文件写入
         f.write(title+"\t"+score+"\n")
     print("成功")

 此时我们可以打开“豆瓣排行榜.txt”查看结果了:

总代码 

import requests
import json
#此处的url就是上面我们找到的url
url = "https://movie.douban.com/j/chart/top_list"
#这里的parmas参数对应的是我们找到的载荷,这里我设置从0开始,一共爬取200个电影
params = {
    "type":"24",
    "interval_id":"100:90",
    "action":"",
    "start": "0",
    "limit":"200"
}
#这里的headers头我们设置浏览器配置,用来反爬虫
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"
}
#创建一个get请求
response = requests.get(url=url,params=params,headers=headers)
#json方法用来提取get回答中的json格式的内容
content = response.json()
#查看content的类型是list【列表】
print(type(content))
#使用json的dumps方法将列表中的第一个元素切换为json格式,并且使用indent等参数变成便于阅读的格式
print(json.dumps(content[0],indent=4,ensure_ascii=False,separators=(",",": ")))

#使用with语句打开文件
with open("豆瓣排行榜.txt","w",encoding="utf-8") as f:
     for item in content:
         #对每个item单独提取出title和score两个键
         title = item["title"]
         score = item["score"]
         #对文件写入
         f.write(title+"\t"+score+"\n")
     print("成功")

http://www.niftyadmin.cn/n/5396085.html

相关文章

排序算法之快速排序(挖坑法)

挖坑法的思想:记第一个数为key,要调整key的位置,使得左边的都要比key的小,右边的数都比key的大。 记录下关键字keybegin,把28那个位置挖坑holebegin 让end找到小于28(key)的数,把那…

2024年腾讯云4核8G5M云服务器并发量支持多少人在线?

腾讯云4核8G服务器支持多少人在线访问?支持25人同时访问。实际上程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素,假设公网带宽太小,流量直接卡在入口,4核8G配置的CPU内存也会造成计算…

【Web安全靶场】sqli-labs-master 1-20 BASIC-Injection

sqli-labs-master 1-20 BASIC-Injection 文章目录 sqli-labs-master 1-20 BASIC-Injection第一关-报错注入第二关-报错注入第三关-报错注入第四关-报错注入第五关-报错注入-双查询注入第六关-报错注入-双查询注入第七关-outfile写入webshell第八关-布尔盲注第九关-时间盲注第十…

LabVIEW磁阻自动优化测量系统

LabVIEW磁阻自动优化测量系统 介绍了一种基于LabVIEW开发的磁阻自动优化测量系统,通过自动优化测试分辨率和高度模块化设计,大幅提升磁阻测试的效率和准确性。系统采用功率电源、电磁铁、高分辨率特斯拉计、步进电机转动器、精密电流源与精准电压表等硬…

from tensorflow.keras.layers import Dense,Flatten,Input报错无法引用

from tensorflow.keras.layers import Dense,Flatten,Input 打印一下路径: import tensorflow as tf import keras print(tf.__path__) print(keras.__path__) [E:\\开发工具\\pythonProject\\studyLL\\venv\\lib\\site-packages\\keras\\api\\_v2, E:\\开发工具\\…

物联网APP开发:技术、挑战与前景

随着科技的快速发展,物联网(IoT)已经成为当今世界的重要趋势。物联网是将物理世界的各种“事物”与互联网连接起来,通过智能设备、传感器和执行器实现数据的收集、交换和处理,以改善生活和工作的方式。物联网APP是实现…

数据分析案例-社交媒体情绪数据集可视化分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

《Vite 基础知识》Vitepress 技术文档站点搭建与配置

前言 简介 VitePress 是一个静态站点生成器 (SSG),专为构建快速、以内容为中心的站点而设计。 简而言之,可构建你自己的 技术文档站点; 环境要求 Node.js 18 及以上版本。我使用 v20.11.0 创建 第一步: 全局安装 npm i vitep…