python:写你的第一个爬虫代码

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

什么是爬虫

爬虫spider,是指向网站或者网络发出请求,获取资源后分析并提取对自己有用的数据的程序。

在这里插入图片描述
request:是指用户将自己的信息通过浏览器发送给服务器。
response:服务器收到用户的请求分析后,返回的数据。
注意:浏览器在接收到服务器的response后,会解析出显示给用户,爬虫程序主要就是模拟浏览器向服务器发出请求并且接收到response后,提取自己需要的数据的过程。

request
请求方式:get/post
请求的url:用来定位互联网上的唯一资源。
User-agent:没有请求头,服务端会当作非法用户host。
cookies:用来保存登录信息。
爬虫程序一般都需要请求头~
请求有需要注意的几个参数:referrer/User-Agent/cookie
请求体:分两种情况,get请求不包含请求体,直接从放在url后面的参数中,如果post请求,请求体就是format data。

response
响应状态:~200:成功 ~301:跳转 ~404:文件不存在 ~403:无权限访问 ~502:服务器错误
response header:响应头需要注意的参数:set-Cookie:BDSVRTM=0;path=/: 可能会有多个参数,用来告诉浏览器,把cookie保存下来。
preview:json数据

获取百度网页数据并放到文件中
在这里插入图片描述

python">from urllib.request import urlopen

url = "http://www.baidu.com"

resp = urlopen(url)

with open("mybaidu.html",mode="w") as f:
  f.write(resp.read().decode("utf-8"))

print("over!")

百度翻译,输入一个单词并翻译

python">import requests
url = "https://fanyi.baidu.com/sug"
s = input("请输入你要翻译的单词:")
data = {
  "kw":s
}
# 发送post请求,发送的数据必须放在字典中,通过data参数进行传递
resp = requests.post(url,data=data)
# 将服务器返回来的内容直接处理成json() =>dict
print(resp.json())
resp.close() #关掉resp

获取豆瓣的电影排行榜数据

python">import requests

url = "https://movie.douban.com/j/chart/top_list"

# 重新封装参数
param = {
  "type": "11",
  "interval_id":"100:90",
  "action":"",
  "start": 0,
  "limit": 20
}
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36X-Requested-With: XMLHttpRequest"
}
resp = requests.get(url=url,params=param,headers=headers)
print(resp.json())
resp.close() #关掉resp

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

相关文章

Linux tracepoint 的使用

文章目录前言一、代码例程二、文件操作2.1 proc_create2.2 struct file_operations参考资料前言 本文主要是写几个内核模块来使用 tracepoint ,用的是 Linux 内核源码的的 sample 例程,由于目前内核已经不提倡手动创建tracepoint,因此将trac…

基于低成本单频接收机的多模非组合精密单点定位研究

摘要 【目的】近年来,精密单点定位(Precise Point Positioning, PPP)技术凭借其高精度、灵活性等特点已逐渐广泛应用于精密导航定位等应用中。但随着大众用户对导航定位需求的不断增加,硬件成本已成为制约高精度卫星导航定位在大众用户中广泛使用的主要因素之一。【方法】因此…

一维树状数组

引入 树状数组和线段树具有相似的功能,但他俩毕竟还有一些区别:树状数组能有的操作,线段树一定有;线段树有的操作,树状数组不一定有。但是树状数组的代码要比线段树短,思维更清晰,速度也更快&a…

Python 自动化测试(三): pytest 参数化测试用例构建

1080501 27.2 KB 在之前的文章中主要分享了 pytest 的实用特性,接下来讲 Pytest 参数化用例的构建。 如果待测试的输入与输出是一组数据,可以把测试数据组织起来用不同的测试数据调用相同的测试方法。参数化顾名思义就是把不同的参数,写到一个…

27. 【gRPC系列学习】gRPC调试日志-LogChannelZ

我们在调用gRPC的时候,希望能够看到gRPC的执行日志,便于分析调用错误,也便于阅读、分析源代码,本节学习调试日志输出。 1.阅读源代码看到日志 channelz.Infof(logger, cc.channelzID, "ClientConn switching balancer to %q", name)2.看下Infof的实现,如果chan…

【详细学习SpringBoot源码之属性配置文件加载原理(Bootstrap.properties|Bootstrap.yml)-8】

一.知识回顾 【0.SpringBoot专栏的相关文章都在这里哟,后续更多的文章内容可以点击查看】 【1.SpringBoot初识之Spring注解发展流程以及常用的Spring和SpringBoot注解】 【2.SpringBoot自动装配之SPI机制&SPI案例实操学习&SPI机制核心源码学习】 【3.详细学…

互联网摸鱼日报(2022-12-23)

互联网摸鱼日报(2022-12-23) InfoQ 热门话题 Swift 2023:所有权、宏和C互操作 Dynamo Data Transform开源:从手动走向自动化 AI 训练加速原理解析与工程实践分享 苹果将对 Foundation 框架用 Swift 重写并开源,网友…

SpringBoot:模块探究之spring-boot-starters

Spring Boot Starters 是一组方便的依赖描述符,您可以将它们包含在您的应用程序中。您可以获得所需的所有 Spring 和相关技术的一站式服务,而无需搜索示例代码和复制粘贴大量依赖项描述符。 例如,如果想使用 Spring 和 JPA 进行数据库访问&am…