当前位置: 首页 > news >正文

分析竞争对手的网站成都网页设计多少钱

分析竞争对手的网站,成都网页设计多少钱,免费ppt资源网站,福建宁德建设局网站我叫不三不四#xff0c;很高兴见到大家#xff0c;欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库#xff0c;完全满足如今网络爬虫的需求。与Urllib对比#xff0c;Requests不仅具备Urllib的全部功能#xff1b;在开发使用上很高兴见到大家欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库完全满足如今网络爬虫的需求。与Urllib对比Requests不仅具备Urllib的全部功能在开发使用上语法简单易懂完全符合Python优雅、简洁的特性在兼容性上完全兼容Python 2和Python 3具有较强的适用性。 请求方式 HTTP的请求方式分为GET和POST GET请求 url语法如下 # 不带参数 url_without_params https://www.baidu.com/# 带参数 wd url_with_params https://www.baidu.com/s?参数名参数值 注如果一个URL有多个参数参数之间用“”连接并且request对于带参数的url请求有两种处理方式 import requests# 第一种方式 r requests.get(https://www.baidu.com/s?参数名参数值)# 第二种方式 url https://www.baidu.com/s params {参数名: 参数值} # 左边 params 在 GET 请求中表示设置参数 r requests.get(url, paramsparams)# 输出生成的 URL print(r.url) 对于动态变化的参数我们可以采用%s来占位的方式来处理 url_template https://www.baidu.com/s?参数名%s search_term 参数值# 使用字符串格式化将搜索词插入到URL中 formatted_url url_template % search_termprint(formatted_url) 这样输出的将会是 https://www.baidu.com/s?参数名参数值 POST请求 POST请求常用来提交表单表单数据就是POST的请求参数。在 requests 中实现POST请求时需要设置 data 参数数据格式可以是字典、元组、列表或JSON。不同格式各有优势。 # 字典类型 data {key1: value1, key2: value2}# 元组或列表 # 这里应该是元组的列表而不是元组中包含元组 tuple_list ((key1, value1), (key2, value2))# JSON import json# 将字典转换为JSON data_json json.dumps(data)# 发送POST请求 import requests r requests.post(https://www.baidu.com/, datadata_json) print(r.text) tips什么是JOSN JSONJavaScript Object Notation是一种轻量级的数据交换格式易于人阅读和编写同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集但是它是独立于语言的许多不同的编程语言都支持生成和解析JSON数据使其成为理想的数据交换语言。 JSON是构建在两种结构之上的 1. 键值对数据以名称/值对的形式存储其中名称或称为键是一个字符串而值可以是字符串、数字、数组、布尔值或另一个JSON对象。 2. 数组数据以有序的列表形式存储列表中的每个元素可以是字符串、数字、数组、布尔值或另一个JSON对象。 一个典型的JSON对象示例如下 {name: John Doe,age: 30,is_student: false,hobbies: [reading, gaming, sports],address: {street: 123 Main St,city: Anytown,state: CA,zip: 12345} } 在这个例子中name、age、is_student、hobbies和address是键而它们对应的值分别是字符串、数字、布尔值、字符串数组和另一个JSON对象。 JSON因其简洁和易于解析的特性在Web开发中被广泛用于客户端和服务器之间的数据交换。例如当一个Web应用从服务器请求数据时服务器通常会以JSON格式返回数据然后Web应用可以使用JavaScript轻松地解析这些数据并更新用户界面。 requests.Response对象的属性和方法 1.基本响应信息 • r.status_code • 作用返回响应状态码如200、404、500等。 • 使用场景判断请求是否成功。 • r.reason • 作用返回响应状态码的文本描述如OK、Not Found等。 • 使用场景提供更详细的响应状态描述。 • r.url • 作用返回实际请求的URL可能经过重定向后的最终URL。 • 使用场景确认请求的最终地址。 2.响应内容 • r.raw • 作用返回原始响应体可以通过r.raw.read()读取。 • 使用场景处理二进制数据或流式响应。 • r.content • 作用以字节方式返回响应体需要手动解码。 • 使用场景处理二进制文件如图片、视频。 • r.text • 作用以字符串方式返回响应体会自动根据响应头的Content-Type或Content-Encoding解码。 • 使用场景处理文本内容如HTML、JSON。 • r.json() • 作用将响应体解析为JSON对象。 • 使用场景处理JSON格式的响应数据。 • r.encoding • 作用返回响应的编码格式如utf-8。 • 使用场景确认或修改响应的编码。 • r.apparent_encoding • 作用基于响应内容分析得出的编码格式可能与r.encoding不同。 • 使用场景当r.encoding为空或不准确时作为备选编码。 3.响应头和Cookie • r.headers • 作用以字典形式返回响应头字典键不区分大小写。 • 使用场景获取响应头中的信息如Content-Type、Content-Length等。 • r.cookies • 作用返回请求后的Cookie对象。 • 使用场景获取服务器返回的Cookie信息。 • r.links • 作用返回响应头中的Link字段内容以字典形式存储。 • 使用场景处理分页或资源链接。 4.重定向和跳转 • r.history • 作用返回一个包含所有中间跳转响应的列表。 • 使用场景跟踪请求的跳转路径。 • r.is_redirect • 作用判断响应是否是重定向如301、302状态码。 • 使用场景控制重定向逻辑。 • r.is_permanent_redirect • 作用判断响应是否是永久重定向301状态码。 • 使用场景处理需要更新URL的重定向。 • r.next • 作用返回下一个响应对象如果存在重定向。 • 使用场景手动处理重定向时获取下一个响应。 5.性能和资源管理 • r.elapsed • 作用返回从发送请求到收到响应的总耗时timedelta对象。 • 使用场景用于性能测试或监控请求的响应时间。 • r.close() • 作用关闭响应对象释放资源。 • 使用场景在使用r.raw或处理大文件时手动关闭响应对象以释放资源。 6.迭代和流式处理 • r.iter_content(chunk_size1, decode_unicodeFalse) • 作用以迭代的方式逐块读取响应内容适合处理大文件。 • 参数 • chunk_size每次读取的块大小以字节为单位。 • decode_unicode是否将内容解码为Unicode。 • 使用场景下载大文件时逐块写入磁盘避免占用过多内存。 • r.iter_lines(decode_unicodeFalse, chunk_size512) • 作用以迭代的方式逐行读取响应内容适合处理文本数据。 • 参数 • decode_unicode是否将内容解码为Unicode。 • chunk_size每次读取的块大小。 • 使用场景处理日志文件或文本数据时逐行读取。 7.请求信息 • r.request • 作用返回发送的请求对象requests.PreparedRequest。 • 使用场景调试或查看发送的请求细节如请求头、请求体等。 8.异常处理 • r.raise_for_status() • 作用如果响应状态码表示请求失败非200响应则抛出异常。 • 使用场景在需要严格处理请求失败时自动抛出异常。 提交复杂的请求 在进行网络爬虫开发或与 Web API 交互时我们常常需要对 HTTP 请求进行定制化处理以满足各种复杂场景的需求。本文将详细介绍如何使用 Python 的 Requests 库实现复杂网络访问包括添加请求头、使用代理 IP、证书验证、超时设置以及使用 Cookies 等常用功能。 一、添加请求头 在 HTTP 请求中请求头Headers是客户端向服务器发送额外信息的重要载体例如指定客户端的类型、语言、接受的数据类型等。通过设置请求头可以模拟不同的浏览器或客户端行为从而提高请求的成功率和兼容性。 以下是添加请求头的代码示例 import requests# 定义请求头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3,Accept-Language: en-US,en;q0.9,Accept-Encoding: gzip, deflate, br }# 发送请求并设置 headers 参数 response requests.get(https://example.com, headersheaders)# 打印响应内容 print(response.text) 在上述代码中我们首先定义了一个名为headers的字典其中包含了常见的请求头字段如User-Agent、Accept-Language和Accept-Encoding。然后在requests.get方法中通过headers参数将该字典传递给请求从而在发送请求时附加了这些自定义的请求头信息。 二、使用代理 IP 在某些情况下我们可能需要通过代理服务器来发送请求例如隐藏真实 IP 地址、访问受限地区的内容等。Requests 库支持使用代理 IP其使用方法与添加请求头类似只需设置proxies参数即可。 以下是使用代理 IP 的代码示例 import requests# 定义代理 IP proxies {http: http://123.45.67.89:8080,https: https://123.45.67.89:8080 }# 发送请求并设置 proxies 参数 response requests.get(https://example.com, proxiesproxies)# 打印响应内容 print(response.text) 在代码中proxies是一个字典其键分别为http和https对应的值是代理服务器的地址和端口号。通过设置proxies参数Requests 库会将请求通过指定的代理服务器发送出去。 需要注意的是在使用代理 IP 时应确保代理服务器的地址和端口号是有效的并且代理服务器支持目标网站的访问。此外代理服务器可能会对请求进行限制或修改因此在使用过程中需要根据实际情况进行调试和优化。 三、证书验证 在与 HTTPS 网站进行交互时证书验证是一个重要的安全机制。默认情况下Requests 库会对 HTTPS 证书进行验证以确保通信的安全性。然而在某些开发或测试环境中我们可能需要关闭证书验证或者使用自定义的证书文件。 以下是证书验证的代码示例 关闭证书验证 import requests# 发送请求并关闭证书验证 response requests.get(https://example.com, verifyFalse)# 打印响应内容 print(response.text) 在上述代码中通过将verify参数设置为False可以关闭对 HTTPS 证书的验证。这在开发过程中用于测试或访问自签名证书的网站时非常有用但在生产环境中不建议关闭证书验证因为这会降低通信的安全性。 使用自定义证书文件   import requests# 发送请求并指定证书文件路径 response requests.get(https://example.com, verify/path/to/certificate.pem)# 打印响应内容 print(response.text) 如果需要使用自定义的证书文件进行验证可以将verify参数的值设置为证书文件的路径。这在访问需要特定证书验证的网站时非常有用例如企业内部的 HTTPS 服务。 四、超时设置 在网络请求过程中由于网络延迟、服务器响应缓慢等原因可能会导致请求长时间没有得到响应。为了避免程序无限等待可以通过设置超时时间来限制请求的等待时间。 以下是超时设置的代码示例 import requests# 发送请求并设置超时时间为 5 秒 try:response requests.get(https://example.com, timeout5)print(response.text) except requests.exceptions.Timeout:print(请求超时) 在代码中通过设置timeout参数的值为5表示请求的超时时间为 5 秒。如果在 5 秒内没有收到服务器的响应Requests 库会抛出一个Timeout异常。通过捕获该异常可以对超时情况进行相应的处理例如重试请求或提示用户。 需要注意的是超时时间的设置应根据实际需求进行调整。如果目标网站的响应速度较慢可以适当增加超时时间如果对响应速度要求较高可以适当减少超时时间。 五、使用 Cookies Cookies 是服务器存储在客户端的一小段文本信息用于标识用户身份、记录用户偏好等。在使用 Requests 库发送请求时可以通过设置cookies参数来使用 Cookies从而实现会话管理等功能。 以下是使用 Cookies 的代码示例 从字符串转换 Cookies import requests# 从浏览器获取的 Cookies 字符串 temp_cookies cookie1value1; cookie2value2# 将 Cookies 字符串转换为字典 cookies {} for cookie in temp_cookies.split(; ):key, value cookie.split()cookies[key] value# 发送请求并设置 cookies 参数 response requests.get(https://example.com, cookiescookies)# 打印响应内容 print(response.text) 在上述代码中temp_cookies是从浏览器的开发者工具中获取的 Cookies 字符串。通过两次分割操作第一次以; 分割得到列表 A第二次对列表 A 中的每个元素以分割得到字典的键值对从而将 Cookies 字符串转换为字典格式。然后在requests.get方法中通过cookies参数将该字典传递给请求即可在请求中使用这些 Cookies。 使用 RequestsCookieJar 对象 import requests# 发送请求并获取服务器返回的 Cookies response requests.get(https://example.com) cookies response.cookies# 打印 Cookies 信息 print(cookies)# 再次发送请求并使用获取到的 Cookies response requests.get(https://example.com, cookiescookies)# 打印响应内容 print(response.text) 在代码中当程序发送请求时不设置参数cookiesRequests 库会自动生成一个RequestsCookieJar对象该对象用于存放服务器返回的 Cookies 信息。通过response.cookies可以获取到该对象然后在后续的请求中通过cookies参数将该对象传递给请求从而实现 Cookies 的传递和使用。 Cookies 的读写操作 如果需要将 Cookies 信息持久化存储可以使用http模块实现 Cookies 的读写操作。此外还可以将 Cookies 以字典形式写入文件这种方法相对简单但安全性较低。以下是将 Cookies 以字典形式写入文件的代码示例 import json# 将 Cookies 以字典形式写入文件 with open(cookies.json, w) as f:json.dump(cookies, f)# 从文件中读取 Cookies with open(cookies.json, r) as f:cookies json.load(f)# 打印读取到的 Cookies print(cookies) 在代码中通过json模块的dump方法将 Cookies 字典写入文件通过load方法从文件中读取 Cookies 字典。这种方法可以方便地将 Cookies 信息保存到本地文件中以便在后续的程序运行中能够重复使用。 下载与上传文件 文件下载 用Python的requests库从网络上下载图片并保存到本地的基本示例 import requests# 图片的URL url https://www.python.org/static/img/python-logo.png# 发送GET请求 r requests.get(url)# 检查请求是否成功 if r.status_code 200:# 打开一个文件用于写入二进制数据with open(python.jpg, wb) as f:# 将图片内容写入文件f.write(r.content)print(图片已成功下载并保存为 python.jpg) else:print(请求失败状态码, r.status_code) 代码解释 1. 导入库 • import requests导入requests库用于发送HTTP请求。 2. 设置URL • url 3. 发送请求 • r requests.get(url)使用requests.get()方法发送GET请求到指定的URL。 4. 检查响应状态码 • if r.status_code 200:检查响应的状态码是否为200表示请求成功。 5. 保存文件 • with open(python.jpg, wb) as f:以二进制写入模式打开一个文件文件名为python.jpg。 • f.write(r.content)将响应内容图片的二进制数据写入文件。 6. 关闭文件 • 使用with语句自动管理文件的打开和关闭不需要显式调用f.close()。 7. 错误处理 • 如果请求失败状态码不是200打印错误信息。 文件上传 文件上传的逻辑是把数据以字节流的形式上传到服务器上再由服务器上传接收内容文件上传有一定难度难点在于服务器接收规则不同。 分析请求 首先通过Fiddler抓包工具来分析微博的发布过程中的网络请求信息 1访问微博并准备抓包 • 访问微博在浏览器中输入 • 单击“高级”按钮在微博页面上可能存在一些高级选项或设置按钮单击它可能会触发一些额外的网络请求或页面功能为后续的抓包操作提供更多的信息。 • 使用Fiddler抓包 • Fiddler是一款网络调试工具可以捕获和分析所有客户端和服务器之间的HTTP/HTTPS通信。 • 由于在发送微博时网页会发生302跳转即浏览器会自动跳转到另一个页面这会导致Chrome浏览器清空请求信息使得抓取难度较大。因此使用Fiddler可以更有效地捕获这些请求信息因为它不会受到浏览器自动跳转的影响能够完整地记录整个请求过程。 2发布微博并查看抓包信息 • 单击“选择文件”在微博发布页面上单击“选择文件”按钮选择一张图片文件。这一步是为了模拟发布微博时上传图片的过程上传图片会触发一个网络请求将图片文件发送到微博服务器。 • 输入发布内容在微博发布框中输入“Python爬虫”这是微博的正文内容。输入内容后微博客户端会将这些内容作为请求的一部分发送到服务器。 • 单击“发布”按钮最后单击“发布”按钮这会触发微博的发布请求。微博客户端会将图片文件、正文内容以及其他相关信息如用户身份验证信息等打包成一个HTTP请求发送到微博服务器。 • 查看Fiddler抓取的请求信息Fiddler会捕获上述过程中所有的网络请求和响应信息。这些信息包括请求的URL、请求方法如POST、请求头包含用户身份验证信息、内容类型等、请求体包含微博正文和图片文件等、响应状态码以及响应内容等。通过查看这些信息可以了解微博发布过程中的数据传输细节例如请求的格式、服务器的响应等这对于分析微博的网络交互机制、开发与微博相关的程序如爬虫等非常有帮助。 从图得知该请求方式是POST, QueryString是POST的请求参数data, Content-type是上传文件三个Content-Disposition分别对应发布内容、发布图片和设置分组可见。代码实现如下 url https://weibo.cn/imblog/sendmblog?rl0stbd6702 cookies {xxx: xxx} files {content: (None, Python 爬虫),pic: (pic, open(test.png, rb)),image/png, visible: (None, 0) } r requests.post(url, filesfiles, cookiescookies) print(r.status_code) POST数据对象是以文件为主的上传文件时使用files参数作为请求参数。Requests对提交的数据和文件所使用的请求参数做了明确的规定。 参数files也是以字典形式传递的每个Content-Disposition为字典的键值对Content-Disposition的name为字典的键value为字典的值。
http://www.pierceye.com/news/524139/

相关文章:

  • 南通百度网站快速优化运城小程序开发公司
  • 做一个综合商城网站多少钱网站建设运营必备人员
  • 聊城做wap网站公司手机网站设计教育类模板
  • 深圳做网站的人做微信投票的网站5
  • 靖安建设局网站WordPress使用云数据库
  • h5制作哪个网站好济南php网站开发
  • 深圳网站建设类公司最大的网站开发公司
  • ps做图游戏下载网站有哪些内容百度ip地址
  • 网站到期续费吗网站首页缩略图 seo
  • 网站制作案例 立邦建立个人网站能赚钱吗
  • 重庆巨能建设集团网站网站seo置顶 乐云践新专家
  • 专业制作网站 上海黑糖 wordpress 主题
  • 数据库网站开发卡片风格网站
  • 信息发布平台建站网站服务器天付
  • 免费做网站方法北京公司排名seo
  • 网站备案登记表晋城市建设局 网站
  • 网站备案会检查空间运营策划
  • 关于做网站建筑人力网
  • 网站开发培训合肥企业解决方案工作组
  • 怎么看待网站开发做网站好赚钱
  • 网站开发工作方案建设网站用什么软件排版
  • 网站建设耂首先金手指建设一个电商网站需要多少钱
  • 网站建设需注意的企业网站建设好的例子
  • 30岁做网站运营优秀的html5网站
  • 专门做眼镜的网站国内重大新闻事件2021年10月
  • 具有价值的网站制作菜单宣传网站怎么做的
  • 做网站 博客信息网站开发网络公司
  • 网站建设有哪些荣誉做响应式网站好不好
  • 精品资料网站网站建立
  • 网站开发印花税营销咨询