PYthon进阶--网页采集器(基于百度搜索的Python3爬虫程序)

简介:基于百度搜索引擎的PYthon3爬虫程序的网页采集器,小白和爬虫学习者都可以学会。运行爬虫程序,输入关键词,即可将所搜出来的网页内容保存在本地。

知识点:requests模块的get方法

一、此处需要安装第三方库requests:

在Pycharm平台终端或者命令提示符窗口中输入以下代码即可安装

pip install requests

二、抓包分析及编写Python代码 

        1、打开百度搜索进行抓包分析

  1. 打开百度搜索的网站
  2. 按下F12键,打开开发者界面
  3. 此时由于翻译页面没有数据传输,属于静态页面,开发者界面也就没有任何数据传输的情况
  4. 在输入框中输入要查找的关键词--周杰伦,回车
  5. 在开发者界面中可以看到有数据正在进行传输(百度搜索是局部刷新,也就是Ajax框架的异步加载)
  6. 找到第一个出现的信息,点击,查看Header信息。
  • 这里只需要用到两部分内容,一个的请求的url地址,一个是user-agent(用户识别)信息。
  • 查看url部分,我们可以看到wd=一堆乱码(对链接的构成不清楚的同学可以百度一下)。其实wd是query,也就是查询的关键词的key,一堆乱码其实就是周杰伦(也就是query的值)。百度采用了编码方式,对其进行乱码产生混淆避免他人破解。

所以在wd的值采用键盘读取关键词再复制给wd,即可搜索输入的关键词。

  • 继续在header后面向下查找user-agent,其位置在:

           2、编写请求模块 

  • requests请求模块有get方法和post方法,此处使用的是get方法。(不清楚的可以百度一下)
  • get方法里面包含多个参数(不写的话requests模块会有默认的参数),里面需要自己写明三个参数。分别为url(访问地址),header(请求头),data(请求数据)。此处由于我们不需要携带data,则我们只需要准备好url和user-agent即可。
  • 需要对url的query的值通过键盘消息输入,代码为:
keyword = input('请输入关键词:')
url= f'https://www.baidu.com/s?wd={keyword}'
  • 对user-agent只需要以字典格式封装到header中即可,代码为:
headers = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36'}
  • 将url和header放入get方法中, 代码如下:
response = requests.get(url=url, headers=headers)

        3、将采集到的网页保存到本地

        通过以上部分,已经获得了所查关键词的网页内容。这里进行将获得的网页内容保存到本地。

  • 只需要进行写入文件,以html格式保存即可。代码如下:
with open(keyword+'baidu.html', 'w', encoding='utf-8') as f:f.write(response.text)print(f"已下载...{keyword}")

 三、所有代码如下:

# get方法是客户端向服务器发送请求,将服务器中的信息获取下来
# 网页采集器:基于百度,编写出python爬虫程序,实现输入关键词搜索,将信息获取到本地。
# 1、导入requests请求模块
import requests
# 2、打开百度网页(也可以是其他网站),复制其链接
# 链接中被采用了其他方式进行编码:wd=为链接中的query属性,后面的乱码其实就是输入的查找的关键词
# https://www.baidu.com/s?wd=%E5%91%A8%E6%9D%B0%E4%BC%A6
# 3、在键盘中输入关键词,读取键盘消息
keyword = input('请输入关键词:')
# 4、输入url
url= f'https://www.baidu.com/s?wd={keyword}'
# 5、编写请求头,防止验证时服务器识别出是机器的操作
# user-agent就是服务器响应时识别是否为认为操作的验证方式
# 如果不写,requests模块会使用默认的user-agent,服务器容易识别出来
# 这里,我们是百度页面抓包分析,找到user-agent的值
headers = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36'}
response = requests.get(url=url, headers=headers)
# print(response.text)
# 4、将查找到的信息下载到本地
with open(keyword+'.html', 'w', encoding='utf-8') as f:f.write(response.text)print(f"已下载...{keyword}")

       运行以上代码即可(注:运行代码时,需要保证处于联网状态。因为requests模块会对服务器进行请求,服务器会响应数据。需要联网,才能传输数据)

基于以上内容, 可以基于360搜索(或其他搜索网站)进行编写PYthon3网页采集器爬虫程序。

   注:此贴只用于学习交流,禁止商用。

      

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

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

相关文章

dump分析方法

一、关于dump 1、什么是dump 在计算机领域中,术语“dump”通常用来指代将某种数据以某种格式进行转储或导出的过程。这个术语可以用于多种不同的上下文,下面是一些常见的情况: 内存转储(Memory Dump):在…

网络空间内生安全数学基础(2)——编码信道数学模型

目录 (零)这篇博客在干什么(一)内生安全与香农信道编码定理(二)基本定义(三)编码信道存在定理(三.壹)编码信道存在第一定理(三.贰)编码…

Micro micro controller一览

https://www.microchip.com.cn/, Microchip中文网站 https://www.microchip.com.cn/newcommunity/index.php?mSearch&adosearch&moduleDownload&keyworddsPIC33&p3 Microcontrollers and microProcessors dsPIC33 Digital Signal Controllers (D…

Leetcode第123场双周赛

Leetcode第123场双周赛 本人水平有限,只做前三道 一、三角形类型 给你一个下标从 0 开始长度为 3 的整数数组 nums ,需要用它们来构造三角形。 如果一个三角形的所有边长度相等,那么这个三角形称为 equilateral 。 如果一个三角形恰好有两…

大学生创新实践:班级管理系统全解析

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Redis(十三)缓存双写一致性策略

文章目录 概述示例 缓存双写一致性缓存按照操作来分,细分2种读写缓存:同步直写策略读写缓存:异步缓写策略双检加锁策略 数据库和缓存一致性更新策略先更新数据库,再更新缓存先更新缓存,再更新数据库先删除缓存&#xf…

不懂快团团大团长对接?凭什么快团团的钱轮到你赚?

对接头部快团团大团长,让快团团大团长帮你卖货 分享几个推品的关键词: 1.推品的内容:产品实拍图核心卖点 不要上来就发笔记,你的产品图和文案还没吸引人,就发笔记没有人看。 可以先发你产品的简短卖点和图片&#xff…

ionic报错:Cannot read properties of undefined (reading ‘classList‘)

报错信息&#xff1a; [ionic/vue Warning]: The view you are trying to render for path /tabs/tab1 does not have the required <ion-page> component. Transitions and lifecycle methods may not work as expected.See https://ionicframework.com/docs/vue/navig…

#Z1656. 树上觅食

Description 小J是一只猴子&#xff0c;住在树上&#xff0c;树上每个点都有一些果子 小J每天要固定吃掉S个果子 小J还要多在树上运动一下&#xff0c;于是他想知道这个树上有多少路径&#xff0c;路径上点的果子的总和正好为S 并且路径上的点的深度是连续增加的 Format …

Go语言每日一练链表篇(一)

题目传送门 牛客面试必刷101题 ----------反转链表 题目以及答案源码 反转链表 题目 解题方法 递归函数遍历链表并反转 package main import _"fmt" import . "nc_tools" /** type ListNode struct{* Val int* Next *ListNode* }*//*** 代码中的…

【数据结构笔记】线性表(代码)

文章目录 顺序表基本操作InitList(&L)静态分配动态分配cc 基本操作实现 顺序表 基本操作 InitList(&L) Length(L); LocateElem(L, e); GetElem(L, i); ListInsert(&L, i, e); ListDelete(&L, i, &e); PrintList(L); Empty(L); DestroyList(&L);InitL…

学习总结14

# 【CSGRound1】天下第一 ## 题目背景 天下第一的 cbw 以主席的身份在 8102 年统治全宇宙后&#xff0c;开始了自己休闲的生活&#xff0c;并邀请自己的好友每天都来和他做游戏。由于 cbw 想要显出自己平易近人&#xff0c;所以 zhouwc 虽然是一个蒟蒻&#xff0c;也有能和 c…

Docker- chapter 1

note 1: docker 利用 volume 进行 presist data。 eg : compose.yaml&#xff1a; volumes:database: //# named db by self list golbal volumes&#xff1a; docker volume ls # the volumes on the disk inpect someone volume&#xff1a; docker volume inspect m…

关于harbor做HA

我起初是用helm在k8s上装的harbor&#xff0c;最近遇到如下故障&#xff1a;就是服务器硬件设备故障突然死机&#xff0c;恰巧是harbor容器所在的服务器&#xff0c;其他在这个服务器上运行的容器&#xff0c;由kubelet调度到其他正常的服务器上重启去了&#xff0c;但harbkor并…

@ 代码随想录算法训练营第6周(C语言)|Day39(动态规划)

代码随想录算法训练营第6周&#xff08;C语言&#xff09;|Day39&#xff08;动态规划&#xff09; Day39、动态规划&#xff08;包含题目 ● 62.不同路径 ● 63. 不同路径 II &#xff09; 62.不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点…

opencv案例实战:条码区域分割

前言 识别二维码是一个日常生活中常见的应用,而识别之前,需要先分割出条形码的区域来获取条形码。我们可以使用OpenCV便捷的获取条码的区域。 逐步分析 为了了解数据处理的过程,我们逐步分析并显示处理过程 查看图像 在读入时,传入参数cv2.IMREAD_GRAYSCALE可以直接按…

2024年陕西省安全员C证证考试题库及陕西省安全员C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年陕西省安全员C证证考试题库及陕西省安全员C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

【DC-9靶场渗透】

文章目录 前言 一、确定靶机地址 二、信息收集 三、寻找漏洞 四、进一步漏洞挖掘 五、关键文件 六、ssh爆破 七、提权 总结 前言 马上过年了&#xff0c;年前再做一下DC靶场最后一个靶机。 一、确定靶机地址 1、可使用arp-scan命令 靶机地址为&#xff1a;172.16.10…

C语言---------对操作符的进一步认识

操作符中有⼀些操作符和⼆进制有关系&#xff0c;我们先学习了⼀下⼆进制的和进制转换的知识。 1.原码、反码和补码。 有符号整数的三种表⽰⽅法均有符号位和数值位两部分&#xff0c; 2进制序列中&#xff0c;最⾼位的1位是被当做符号位&#xff0c;剩余的都是数值位。 符号…

GDB调试命令大全

GDB调试命令大全 启动运行设置/查看断点(breakpoint)设置/查看观察点(watchpoint)设置/查看捕捉点(catchpoint)维护停止点维护条件停止点停止点设置运行命令断点菜单恢复程序运行和单步调试信号产生信号量线程 转载自&#xff1a; https://www.cnblogs.com/gqtcgq/p/7511974.h…