python数据采集-URL编码处理

news/2024/12/14 0:26:21/

1. 导入必要的库


   - `urllib.request`:用于发送HTTP请求。
   - `urllib.parse`:用于对URL进行编码。
   - `fake_useragent.UserAgent`:用于生成随机的用户代理,模拟真实的浏览器行为。
   - `webbrowser`:用于在浏览器中打开文件或URL。

2. 生成用户代理 


   使用`fake_useragent.UserAgent()`来创建一个`UserAgent`对象,并通过`.random`属性获取一个随机的用户代理字符串。这样可以避免请求被网站识别为爬虫。

python">   ua = UserAgent()headers = {'User-Agent': ua.random,}

3. 构造请求URL


   使用`urllib.parse.urlencode`对查询参数(例如 `wd=python`)进行URL编码,并将其附加到百度搜索的URL中。

python"> url = 'https://www.baidu.com/s?' + parse.urlencode({'wd': 'python'})

4.发送HTTP请求


   使用`urllib.request.Request`构造一个请求对象,并传入请求头(包括随机生成的用户代理)。然后,使用`urllib.request.urlopen`发送请求并接收响应。

python"> req = request.Request(url, headers=headers)response = request.urlopen(req)

5. 读取和保存响应内容 


   响应内容以HTML格式返回,使用`.read()`方法读取响应并解码成UTF-8格式的字符串。将该内容保存到本地文件`baidu.html`。

python">  html = response.read().decode('utf-8')with open('baidu.html', 'w', encoding='utf-8') as f:f.write(html)

6. 打开浏览器查看结果


   使用`webbrowser.open`方法在默认浏览器中打开保存的HTML文件。

python">webbrowser.open('baidu.html')

完整代码:

python">from urllib import request
from urllib import parse
from fake_useragent import UserAgent
import webbrowserua = UserAgent()
headers = {'User-Agent': ua.random,
}
url = 'https://www.baidu.com/s?'+parse.urlencode({'wd':'python'})# 发送请求
req = request.Request(url, headers=headers)
# 接收响应
response = request.urlopen(req)
# 读取响应内容
html = response.read().decode('utf-8')
with open('baidu.html', 'w', encoding='utf-8') as f:f.write(html)
# 打开浏览器显示结果
webbrowser.open('baidu.html')

 总结:
这个工作流的目的是:
1. 模拟浏览器请求百度搜索页面。
2. 获取并保存HTML内容。
3. 使用浏览器展示保存的HTML文件。

这样做能够确保你的请求不容易被识别为爬虫,并且可以查看百度搜索的结果。

如果您有其他问题,或者需要进一步优化这个流程,欢迎继续提问!


http://www.ppmy.cn/news/1554889.html

相关文章

ffmpeg使用自定义字体添加字幕

一,背景与问题描述 背景 最近工作项目要求,需要使用SRT字幕文件,为对应的视频添加字幕,并且需要使用指定的字体(如Roboto、Poppins等) 调研发现,使用以下命令可以为视频添加字幕 ffmpeg -i …

MacOS 下 pico/pico2 学习笔记

1.安装开发工具 cmake brew install cmakeopenocd brew install openocdarm-none-eabi-gcc 用 brew 安装的版本会出现如下错误: arm-none-eabi-gcc: fatal error: cannot read spec file nosys.specs: No such file or directory用 arm 官方的版本没有问题。 cd …

运输层4——TCP格式(重点!)

目录 一、TCP报文段格式 二、最大报文长度 MSS 一、TCP报文段格式 长度:前20个字节固定 后4n个字节(报文段格式不固定) 1、源端和目的端:各2个字节 作用:指明TCP链接的发送 2、序号 4字节 作用&#xff1…

python脚本:向kafka数据库中插入测试数据

# coding:utf-8 import datetime import json import random import timefrom kafka import KafkaProducer生产者demo向branch-event主题中循环写入10条json数据注意事项:要写入json数据需加上value_serializer参数,如下代码producer KafkaProducer(val…

深入源码层面:在 Spring Boot 和 Spring MVC 项目中实现全面请求记录与异常处理的拦截器与监听器分析

在现代 Web 应用开发中,了解请求处理和异常管理的底层实现是提升应用稳定性与可维护性的关键。本文将从源码层面深入分析 Spring Boot 和 Spring MVC 中的拦截器(Interceptor)与监听器(Listener),探讨如何通…

mHand Pro动捕数据手套,赋予手部虚拟交互沉浸式极致体验

随着虚拟现实技术的不断发展,数据手套作为与虚拟世界交互的重要工具,在提升交互沉浸式体验感方面发挥着重要作用。而mHand Pro动捕数据手套的出现则为追求更加极致体验的游戏玩家,创意表达者与开发者提供了一个更高性价比选择,凭借…

“切片赋值”创建列表批量操作“新”方法(Python)

[start:end]切片赋值,扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建,本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:…

孚盟云 MailAjax.ashx SQL注入漏洞复现

0x01 产品简介 上海孚盟软件有限公司是一家外贸SaaS服务提供商,也是专业的外贸行业解决方案专业提供商。 全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,主要…