爬虫学习-requests模块

news2024/11/23 21:03:53
  • python中原生的一款基于网络请求的模块,功能强大,简单便捷,效率极高
  • 作用:模拟游览器发请求
  • (15条消息) Header:请求头参数详解_平常心丷的博客-CSDN博客_headers参数
  • (15条消息) requests的get方法和post方法_不问散人的博客-CSDN博客_request get post
  • (15条消息) Python爬虫——Requests 的Get和Post请求_万里顾—程的博客-CSDN博客
  • 如何使用:
    • 指定url
    • 基于requests模块发起请求
    • 获取响应对象中的数据值
    • 持久化存储
  • UA伪装
    • UA:User-Agent,请求载体的身份标识,用户设备标识

    • UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款游览器,说明该请求是一个正常的请求;但是如果检测到请求的载体身份标识不是基于某一款游览器的,则标识该请求为不正常的请求,服务器端就很有可能拒绝此次请求
    • UA伪装:将对应的User-Agent封装到一个字典中
  • 实践
  • 一、爬取搜狗首页的页面数据
  • # requests模块
    # 爬寻搜狗首页的页面数据
    import requests
    
    if __name__ == '__main__':
        # step1:指定url
        url = 'https://www.sogou.com/'
        # step2:发起请求
        # get方法会返回一个响应对象
        response = requests.get(url=url)
        # step3:获取响应数据,text返回的是字符串响应的数据
        page_text = response.text
        # step4:持久化存储
        with open('./sougou.html', 'w', encoding='utf-8') as wstream:
            wstream.write(page_text)
        print('爬取数据结束!!!')

  • 二、爬取搜狗指定词条对应的搜索结果页面(简易网页采集器)

  • # 简易网页采集器
    import requests
    
    if __name__ == '__main__':
        # UA伪装:将对应的User-Agent封装到一个字典中
        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.36 Edg/108.0.1462.46'
        }
        # step1:指定url
        url = 'https://www.sogou.com/web'
        # 处理url携带的参数:封装到字典中
        kw = input('enter a word:')
        param = {
            'query': kw
        }
        # step2:发起请求
        # 对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数
        result = requests.get(url=url, params=param, headers=headers)
        # step3:获取响应数据
        fileName = kw + '.html'
        page_text = result.text
        with open(fileName, 'w', encoding='utf-8') as wstream:
            wstream.write(page_text)
        # step4:持久化储存
        print(fileName, '保存成功!!!')
    

  • 三、破解百度翻译
  • # 破解百度翻译
    import requests
    import json
    
    if __name__ == '__main__':
        # step1、指定url
        post_url = 'https://fanyi.baidu.com/sug'
        # step2、进行UA伪装
        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.36 Edg/108.0.1462.46'
        }
        # step3、post请求参数处理,同get一致
        kw = input('enter a word:')
        data = {
            'kw': kw
        }
        # step4、请求发送
        result = requests.post(url=post_url, data=data, headers=headers)
        # step5、获取响应数据:json()返回的是一个对象,如果确认响应数据是json类型的,才可以使用json()
        dic_obj = result.json()
        print(dic_obj)
        # step6、持久化存储
        filename = kw + '.json'
        fp = open(filename, 'w', encoding='utf-8')
        json.dump(dic_obj, fp=fp, ensure_ascii=False)
        fp.close()
        print('over!')
    
     
    • post请求(携带了参数)
    • 响应数据是一组json数据
    • 了解:ajax是一种技术,指在不更新整个网页的情况下对页面局部进行刷新的技术
    • 没有sug,要切换为英文输入法
      • sug如果表头里面没有kw的化,可以去负载里面找到
  • 四、爬取豆瓣电影分类排行榜豆瓣电影中的电影详情数据
  • # 豆瓣电影爬取
    import requests
    import json
    
    if __name__ == '__main__':
        # step1:指定url
        url = 'https://movie.douban.com/j/chart/top_list'
        # step2:设定参数
        param = {
            'type': '25',
            'interval_id': '100:90',
            'action': '',
            'start': '0',  # 从库中的第几部电影去取
            'limit': '20',  # 每次取出的个数
        }
        # UA伪装
        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.36'
        }
        # 数据请求
        response = requests.get(url=url, params=param, headers=headers)
        # 持久化储存
        list_data = response.json()
        fp = open('douban.json', 'w', encoding='utf-8')
        json.dump(list_data, fp=fp, ensure_ascii=False)
        fp.close()
        print('over!!')
    

  • 五、爬取肯德基餐厅查询肯德基官方网站 - Welcome to KFC.com.cn中指定地点的餐厅数量
  • import requests
    import json
    
    if __name__ == '__main__':
        # 指定url
        url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
        # 处理参数
        keyword = input('输入要查询的地址:')
        param = {
            'cname': '',
            'pid': '',
            'keyword': keyword,
            'pageIndex': '1',
            'pageSize': '10',
        }
        # UA伪装
        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.36'
        }
        # 获取响应数据
        response = requests.post(url=url, params=param, headers=headers)
        ########################################################
        # page_txt = response.text
        # # 持久化储存
        # with open('kfc.txt', 'w', encoding='utf-8') as wstream:
        #     wstream.write(page_txt)
        # print('获取成功')
        ########################################################
        page = response.json()
        print(page)
        fp = open('kfc.json', 'w', encoding='utf-8')
        json.dump(page, fp=fp, ensure_ascii=False)
        fp.close()
        print('完成')
    

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二十九、之Java 数据结构

Java 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration)位集合(BitSet)向量(Vector)栈(Stack)字典&#xff…

Linux 下安装多个mysql

1、下载mysql https://downloads.mysql.com/archives/community/2、创建用户组 groupadd mysql 3、创建用户 useradd -r -g mysql5736 mysql5736 4、解压文件 tar zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 5、重命名 mv mysql-5.7.39-linux-glibc2.12-x86_64 …

随着企业信息化发展之源代码防泄密需求分析

源代码防泄密需求: 随着企业信息化发展的日益增长,软件行业厂商之间的竞争也愈加白热化,加上国内对知识产权的不够重视、山寨模仿产品的横行。保护源代码、保证企业的核心竞争力,成为众多软件研发企业的第一要务。那么企业应该如…

深度学习入门(六十一)循环神经网络——长短期记忆网络LSTM

深度学习入门(六十一)循环神经网络——长短期记忆网络LSTM前言循环神经网络——长短期记忆网络LSTM课件长短期记忆网络门候选记忆单元记忆单元隐状态总结教材1 门控记忆元1.1 输入门、忘记门和输出门1.2 候选记忆元1.3 记忆元1.4 隐状态2 从零开始实现2.…

mysql常用操作(亲测自用,持续更新...)

文章目录一、新建数据库1、字符集1.1 字符集作用1.2 常用选择2、排序规则2.1 排序规则作用2.2 常用选择二、新建表1、字符串类型1.1 CHAR 和 VARCHAR 的定义1.2 字符占用三、常用基础知识1、什么是方言?2、SQL书写规范3、SQL分类1)DDL (data …

day6 递推

P1928 外星密码 对于 100% 的数据&#xff1a;解压后的字符串长度在 20000 以内&#xff0c;最多只有十重压缩。保证只包含数字、大写字母、[ 和 ]。 #include <bits/stdc.h> using namespace std;string fun(){char ch;//输入字符 int n;//复制次数 string ans"&…

Teststand-控件

文章目录管理控件应用程序管理控件序列文件视图管理控件执行视图管理控件可视化控件视图连接列表连接命令连接信息源连接在 LabVIEW 中&#xff0c;TestStand 相关的所有控件都在estStand 选板上这些控件全部是Active X控件&#xff0c;LabVIEW对它的编程是属性节点、方法节点及…

ActivityManagerService,给我启动个App瞅瞅呗

前言 其实早在几年前&#xff0c;我就有一个疑问。 为什么我们的逻辑代码写在Activity中&#xff0c;在App启动后就会执行到它。为什么第三方库的初始化要写在Application中&#xff0c;而它为什么执行顺序比Activity还要靠前。 如果您想搞清楚这些原因&#xff0c;那么本文…

3年经验去面试20k测试岗,看到这样的面试题我还是心虚了....

我是着急忙慌的准备简历——3年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;3年测试经验起码能要个20K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&#xff0c;自信满满去面试&#…

Python 数据分析之 3 —— pandas 数据分析

第1关:了解数据集特征 任务描述 本关任务:载入网贷数据集,了解数据概况。 共包含多个子任务: 1.1 读取Training_Master.csv文件,命名为master; 1.2 读取Training_Userupdate.csv文件,命名为user; 1.3 读取Training_LogInfo.csv文件,命名为log; 1.4 分别输出它们的形…

世界杯基本知识科普

目录 一、历史沿革 二、历届冠军 三、举办城市 四、中国情况 五、国际赛事统计 世界杯&#xff08;World Cup&#xff09;是由国际足联主办的世界足坛最高级别的足球比赛&#xff0c;每四年举办一次。 足球世界杯是由一项世界性的赛事&#xff0c;它由16个国家和地区联合…

cubeIDE开发, STM32的CAN总线开发要点

一、CAN总线简介 1.1 CAN概述 CAN是Controller Area Network&#xff08;控制区域网络&#xff09; 的缩写&#xff0c;是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后&#xff0c;CAN通过ISO11898及ISO11519进行了标准化。现在在欧洲已是汽车网络…

为什么数字化时代需要 BizDevOps?

随着云原生、元宇宙、Web3等技术拉开序幕&#xff0c;智能制造、智慧城市、精准医疗等应用场景徐徐展开&#xff0c;继人类工业文明之后&#xff0c;下一个大变局的奇点临近。 毫无疑问&#xff0c;以数字技术应用为主线的数字化转型是此次人类文明变革的核心动力。在这一变革…

JavaWeb蛋糕商城系统课程设计(Vue+ElementUI+Mybatis+HTML+Axios)

前提 唉&#xff0c;本学期疫情放假放得早&#xff0c;用了一个星期完成这次课设。(主要还是从0开始学前端的VUE),在HTML中引入VUE,然后用Axios&#xff08;封装AJAX&#xff09;发请求更新数据。感觉上特别繁琐&#xff0c; 蛋糕商城系统&#xff0c;也就是黑马程序员的Java…

从游戏服务端角度分析移动同步(状态同步)

从游戏服务端角度分析移动同步&#xff08;状态同步&#xff09; 参考文章&#xff1a; https://www.lfzxb.top/ow-gdc-gameplay-architecture-and-netcode/ https://zhuanlan.zhihu.com/p/544473862 对于游戏服务端来说&#xff0c;针对状态同步主要需要考虑的是三大模块&…

清远市城市品牌及五大百亿农业产业区域公用品牌亮相

12月19日&#xff0c;由清远市人民政府主办&#xff0c;中共清远市委宣传部、清远市农业农村局联合承办的“天赋风土 自在清远——清远城市品牌及五大百亿农业产业区域公用品牌发布会”正式举行&#xff0c;清远城市品牌与五大百亿农业产业区域公用品牌偕同亮相。清远向外界展示…

【SpringCloud学习笔记】Hystrix

Hystrix搭建项目服务降级服务熔断请求合并如何和Feign一起使用搭建项目 –|eureka-registry --注册中心 –|hystrix-service – 调用用户服务 –|user-service --用户服务 hystrix-service server:port: 9002 spring:application:name: hystrix-serviceeureka:instance:hostn…

jsp+ssm计算机毕业设计多功能电子词典【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

机器人开发--接近开关

机器人开发--接近开关1 概述1.1 定义1.2 分类2 各类介绍2.1 无源接近开关2.2 涡流式接近开关2.3 电容式接近开关2.4 霍尔接近开关2.5 光电式接近开关2.5.1 漫反射式光电开关2.5.2 镜反射式光电开关2.5.3 对射式光电开关2.6 其它型式参考1 概述 1.1 定义 接近开关是一种无需与…

ANTLR4入门(三):使用mave ANTLR4插件(antlr4-maven-plugin)执行语法解析生成器

在上篇博客《ANTLR4入门(二):图示说明eclipse安装Antlr4IDE插件的过程》&#xff0c;我费半天劲装好了Eclise的AntlrIDE插件&#xff0c;简单的创建一个ANTLR 4 工程&#xff0c;感受了一下AntlrIDE插件提供的语法高亮的便利性。及语法文件(.g4)自动生成解析器代码的过程 然而…