爬虫基础一(持续更新)

爬虫概念:

通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程

分类:

1,通用爬虫:抓取一整张页面数据

2,聚焦爬虫:抓取页面中的局部内容

3,增量式爬虫:只会抓取网站中最新更新出来的数据

反爬协议robots.txt协议

http协议:

服务器与客户端进行数据交互的一种形式

User-Agent:请求载体的身份标识

Connection:请求完毕是断开还是保持连接

Content-Type: 服务器响应回客户端的数据类型

https协议:证书认证加密,安全的超文本传输协议

1,requests模块:

作用:模拟浏览器发请求

流程:1,指定url 2,发起请求 3,获取响应数据 4,持久化存储

1.1爬取搜狗首页:

import requests
if __name__ == '__main__':url='https://www.sogou.com/'response=requests.get(url=url)page_text=response.text#返回字符串形式的响应数据print(page_text)with open('./sougou.html','w',encoding='utf-8') as fp:fp.write(page_text)print('爬取数据结束!')

1.2网页采集器

User-Agent:请求载体的身份标识

UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器

import requests
if __name__ == '__main__':#UA伪装:将对应的UA封装到一个字典里headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2669.400 QQBrowser/9.6.10990.400'}url='https://www.sogou.com/sie?hdq=AQxRG-0000&'#处理URL参数分装到字典里kw=input('enter a word:')param={'query':kw}
#对指定URL发起的请求对应的url是携带参数的请求过程中处理了参数response=requests.get(url=url,params=param,headers=headers)page_text=response.text#返回字符串形式的响应数据fileName=kw+'.html'with open(fileName,'w',encoding='utf-8') as fp:fp.write(page_text)print(fileName,'保存成功!!')

1.3破解百度翻译

打开百度翻译官网,右键检查

发出的是一个post请求(携带参数),响应数据是一组json数据 

import requests
import json#导入模块
if __name__ == '__main__':post_url='https://fanyi.baidu.com/sug'#1,指定urlheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2669.400 QQBrowser/9.6.10990.400'}#经行UA伪装#3,post请求参数处理(与get类似)word=input('enter a word:')data={'kw':word}#4,发送请求response=requests.post(url=post_url,data=data,headers=headers)#5,获取响应数据:json()方法返回的是obj(提前确定是json类型)dic_obj=response.json()#持久化存储fileName=word+'.json'fp=open(fileName,'w',encoding='utf-8')json.dump(dic_obj,fp=fp,ensure_ascii=False)#中文不可以用ASCII码print('over!!')

效果:

 

1.4,豆瓣电影爬取

 

文件类型为json,地址中有参数,获取方式为get

import requests
import json#导入模块
if __name__ == '__main__':url='https://movie.douban.com/j/chart/top_list'param={'type':'24','interval_id':'100:90','action':'','start':'3',#第一个电影'limit':'20'#数量}headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2669.400 QQBrowser/9.6.10990.400'}response=requests.get(url=url,params=param,headers=headers)#请求list_data=response.json()#json类型fp=open('./douban.json','w',encoding='utf-8')#生成文件json.dump(list_data,fp=fp,ensure_ascii=False)print('over!!!')

 1.5爬取肯德基餐厅

要求:统计各个城市共有多少家肯德基餐厅,并打印门店信息

请求方式为post,文本类型(content-Type):text

参数:

 


import requestsurl = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
# UA伪装
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'
}
word = input("请输入地址: ")
numbers = 1
# 页数
number_pages = 0
# 第一次检测页数
state = True
while numbers != 0:number_pages += 1data = {'cname': '','pid': '','keyword': word,'pageIndex': number_pages,'pageSize': '10',}# 请求发送response = requests.post(url=url, data=data, headers=header)text = response.textnumbers -= 1# 计算页数,因为只需要一次即可if state:# 将列表text转化为字典dictionary = eval(text)# 获取第一段Table的页数rowcount = dictionary['Table']# 将这个列表中的字典赋给dictsdicts = rowcount[0]# 查询rowcount所指的页数numbers = dicts['rowcount']if numbers == 0:print("抱歉,您所输入的地址没有肯德基餐厅")else:print(f"{word}一共有{numbers}家肯德基餐厅")if numbers % 10 == 0:numbers = numbers // 10#整除else:numbers = numbers // 10  # 不加一是因为已经检查过一次了state = Falseprint(text)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

星穹铁道1.5版本活动【狐斋志异】,有哪些有趣故事和彩蛋

狐斋志异算是玩梗集大成者,加上剧情内补全了一些故事设定。版本活动名称【狐斋志异】致敬的是清朝小说家蒲松龄创作的《聊斋志异》。聊斋志异被国人所熟悉的莫过于里面的鬼怪故事,因此又称为《鬼狐传》。 这次【狐斋志异】开拓任务也是围绕着开拓者去十王…

鸿鹄电子招投标系统:源码级别解析电子招投标的精髓

招投标管理系统是一个集门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理于一体的综合性应用平台。它适用于招标代理、政府采购、企业采购和工程交易等业务的企业,旨在提高项目管理的效率和质量。该系…

Java后端开发——Ajax、jQuery和JSON

Java后端开发——Ajax、jQuery和JSON 概述 Ajax全称是Asynchronous Javascript and XML,即异步的JavaScript和 XML。Ajax是一种Web应用技术,该技术是在JavaScript、DOM、服务器配合下,实现浏览器向服务器发送异步请求。 Ajax异步请求方式不…

Docker中镜像的相关操作

1.辅助操作 docker version:用查看docker客户端引擎和server端引擎版本信息。 docker info:用来查看docker引擎的详细信息。 docker --help:用来查看帮助信息。 2.镜像Image docker images:查看当前本地仓库中存在哪些镜像。 …

速通C语言第十二站 文件操作

系列文章目录 速通C语言系列 速通C语言第一站 一篇博客带你初识C语言 http://t.csdn.cn/N57xl 速通C语言第二站 一篇博客带你搞定分支循环 http://t.csdn.cn/Uwn7W 速通C语言第三站 一篇博客带你搞定函数 http://t.csdn.cn/bfrUM 速通C语言第四站 一篇博客带…

Java重修第一天—学习数组

1. 认识数组 建议1.5倍速学习,并且关闭弹幕。 数组的定义:数组是一个容器,用来存储一批同种类型的数据。 下述图:是生成数字数组和字符串数组。 为什么有了变量还需要定义数组呢?为了解决在某些场景下,变…

ORACLE Primavera Unifier v23.12 最新虚拟机(VM)分享下载

引言 根据上周的计划,我近日简单制作了一个基于ORACLE Primavera Unifier 最新版23.12的虚拟机演示环境,里面包括了unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机,请您与Oracle 销售代表联…

知虾电商(Shopee):东南亚领先电商平台的十大关键特点**

知虾电商(Shopee)作为东南亚地区领先的电子商务平台,由Sea Group(前称Garena)在2015年创立。知虾电商以移动优先的策略迅速崛起,为用户提供了一个便捷、安全的在线购物环境。以下是知虾电商的一些关键特点&…

服务器执行rm命令时自动记录到审计日志中

目的 当在服务器上执行类似于 rm 命令时,自动记录该命令执行的时间,在哪里执行的,删除的什么文件,记录到审计日志中,能够查找到某些文件丢失原因 配置 # 需要root权限,sudo不行,这里假设执行…

RocketMQ5-01云原生和AI演变下的架构重构

2022年9月22日,迎来 RocketMQ5 的发版,距离 2017 发布的 4.X 时代,RocketMQ 迎来 5.X 时代。 RocketMQ 4.X 时代已经使众多开发者和项目受益,但是随着关注度、使用量逐步上升以及云原生时代的到来,也对其自身架构带来…

计算机网络课程设计-企业网三层架构

(单人版) 摘 要 本篇报告主要解决了为一家名为西宫的公司网络搭建问题,该网络采用企业网三层架构对完了过进行设计。首先使用以太网中继,主要使用VLAN划分的技术来划定不同部门。使用MSTP对每个组配置生成树,防止交换机…

【软件测试】2024年准备中/高级测试岗技术面试...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、软件测试基础知…

Unity中URP下统一不同平台下的z值

文章目录 前言一、ComputeFogFactor 来计算雾效混合因子二、UNITY_Z_0_FAR_FROM_CLIPSPACE 来统一计算不同平台下的Z值1、DirectX平台2、GL平台下(在Unity.2022.LTS下,该功能没有完善)3、Opengl下 前言 在之前的文章中,我们实现了URP下的雾效…

天津最新web前端培训班 如何提升web技能?

随着互联网的迅猛发展,web前端成为了一个热门的职业方向。越来越多的人希望能够通过学习web前端技术来提升自己的就业竞争力。为了满足市场的需求,许多培训机构纷纷推出了web前端培训课程。 什么是WEB前端 web前端就是web给用户展示的东西,…

python+selenium爬虫笔记

本文只是做例子,具体网站路径麻烦你们换下,还有xpath路径也换下 一、安装所需要的组件(此处采用谷歌) 1、安装驱动 查看你的浏览器版本,去安装对应的版本 下载驱动 下载驱动路径 之前版本的 输入这个路径下载下来解压…

【Bootstrap5学习 day12】

Bootstrap5 导航 Bootstrap5提供了一种简单快捷的方法来创建基本导航,它提供了非常灵活和优雅的选项卡和Pills等组件。Bootstrap5的所有导航组件,包括选项卡和Pillss,都通过基本的.nav类共享相同的基本标记和样式。 创建基本导航 要创建简单…

亚马逊店铺遇到账号申诉模版分享

1.表达诚意,先认错再说:我知道,最近我们在Amazon.com上作为卖家的表现已经低于亚马逊和我们自己的质量标准。 2.清楚分明的格式:我们库存管理的混乱导致了延迟发货,更糟糕的是,物品无法使用。当延迟发货和…

对话新七天创始人&CEO左英杰:品牌直播电商出圈“五步法”

整理 | 飞族 编辑 | 渔舟 出品|极新&北京电子商务协会 AI、AIGC、VR等数智化新技术发展日新月异,在直播电商领域的应用和探索逐渐深入,从内容生成、创意优化、购物体验、智能客服、精准营销等方面提供全方位全链路的赋能&#…

内网穿透的应用-使用Docker本地部署可编辑导航页结合内网穿透实现远程访问

文章目录 1. 使用Docker搜索镜像2. 下载镜像3. 查看镜像4. 启动容器5. 浏览器访问6. 远程访问6.1 内网穿透工具安装6.2 创建远程连接公网地址6.3 使用固定二级子域名地址远程访问 今天和大家分享如何使用Docker本地部署一个开源的简约风格网址导航页,支持五种搜索引…

湖南大学-数据库系统-2023期末考试【原题】

前言 早上11:00考完的考试,下午回来打了三把LOL之后,凭着回忆把题目重现出来了。 在复习的时候刷了15,16,17,18,19,21六年的卷子,感觉题目都差不多,但是难度…