热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python爬虫学习第一天uillib库和request库

1、urllibpython内置的http的请求库urllib.request#请求模块wwwurllib.request.urlopen(url,data,

1、urllib python 内置的http的请求库
  urllib.request #请求模块
  www=urllib.request.urlopen(url,data,timeout)
  www.read().decode('utf-8')
  type(www)#响应类型
  www.status#响应状态吗
  www.getheaders()#响应头
  www.getheader('Server')

  代理handler
  handler=urllib.request.ProxyHandler({'http':'http://207.246.77.83:2010'})
  COOKIE#维持网站登陆状态

  urllib.error#异常处理模块
  try
    需要捕获异常的代码
  except 异常原因 as e:
    操作
  #print(e.reason)
  #if isinstance(e.reason,'TIMEOUT')
  # print('连接超时')

  异常类型
  error.HTTPError
  error.URLError

  urllib.parse#解析模块
  urllib.parse.urlpasrse(url,scheme,allow_fragmengts=True)#scheme协议类型 allow_fragmengts允许分割6个字段

  urllib.parse.urlunpasrse()
  urllib.parse.urljoin()#url拼接
  urllib.parse.urljoin()
  urllib.parse.urlencode()#将字典的键值对转化为url
  urllib.robotparse#解析txt文本

Request python 内置的http库
  pip3 install requests#安装requests库

  url = 'http://www.365cmd.com/forum.php'
  re=request.get(url)
  type(re)
  re.status_code
  re.COOKIEs
  re.headers
  re.text



  arms={
  'mod':'viewthread',
  'tid':'14807'
  }
re1=requests.get(url,params=arms)#利用字典形式传递params参数构造网址http://www.365cmd.com/forum.php?mod=viewthread&tid=14807

  解析json
  re1.json()

  获取二进制数据
  re1.content

  保存二进制数据
  with open('文件名','mode') as file
  file.write(re1.content)
  file.close()

  打开windows文件C:\Users\Raytine\Desktop\111\123\1111222.txt

  f=open(r'C:/Users/Raytine/Desktop/111/123/1111222.txt','r')
  如果文件不在项目目录下,需写完整的路径,windows下的\代表转移字符

  添加header
  header={
  }
  re2=requests.get(url,header=header)

  post方法
  data={
  ...
  }
  header={
  ...
  }
requests.post(url,data=data,header)

  response状态码判断
  re.status_code
  200成功
  404NOT FOUNLD

  获取COOKIE
  re.COOKIEs
  for key, value, in re.COOKIEs.items()
  string = '%s%s%s' % (key, ' = ', value)#字符串格式化
  print(string)

  会话维持
  request.Session().get(url)#模拟在同一个浏览器操作

  证书验证
  爬取https网站url='https://www.12306.cn'
  request.get(url)
  若浏览器检测证书不安全,response报错
  过滤错误信息以及不检测证书
  from request.packages import urllib3
  urllib3.disable_warning()
  requests.get(url,verify=False)

  requests.get(url,cert='crt,key')

  代理设置
  proxies={
  'http':'http://207.246.77.83:2010'
  'https':'http://user:passwd@207.246.77.83:2010'}


  pip3 install requests[socks]# sock5代理安装
  proxies={
  'https':'sock5://207.246.77.83:2010'
  'https'='https:sock5//user:passwd@207.246.77.83:2010'}

  requests.get(url,proxies=proxies)

  超时设置
  try
  requests.get(url,timeout=1)
    except ReadTimeOut
  print('TIMEOUT')

  认证设置

  from requests.auth import HTTPBasicAuth
  requests.get(url,auth=HTTPBasicAuth('USER':'PASSWORD'))
  requests.get(url,auth=('USER':'PASSWORD'))

  异常捕获处理
  try
    requests.get(url)

  except ReadTimeOut:
    操作
    print('**异常')
  except HTTPError:
    操作
    print('**异常')
  except ConnectionError:
    操作
    print('**异常')
  except RequestException:
    操作#捕获父类异常
    print('异常')


转载于:https://www.cnblogs.com/chenxiaoweiworkinghard/p/9281751.html


推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 在使用 `requests` 库进行 HTTP 请求时,如果遇到 `requests.exceptions.SSLError: HTTPSConnectionPool` 错误,通常是因为 SSL 证书验证失败。解决这一问题的方法包括:检查目标网站的 SSL 证书是否有效、更新本地的 CA 证书库、禁用 SSL 验证(不推荐用于生产环境)或使用自定义的 SSL 上下文。此外,确保 `requests` 库和相关依赖项已更新到最新版本,以避免潜在的安全漏洞。 ... [详细]
  • PHP中函数名、常量名和变量名大小写转换及规范详解
    在PHP编程中,初学者常常会遇到关于函数名、常量名和变量名大小写的问题。本文详细解析了PHP中这些名称的大小写敏感性及其命名规范,帮助开发者更好地理解和使用PHP。具体而言,文章探讨了PHP中的常量名是否区分大小写,自定义函数名的大小写敏感性,以及类名的大小写规则。此外,还提供了实用的代码示例和最佳实践,以确保代码的可读性和一致性。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 在PHP的设计中,预定义了9个超级全局变量、8个魔术变量和13个魔术函数,这些变量和函数无需声明即可在脚本的任意位置使用。这些特性在PHP开发中极为常见,能够显著提升开发效率和代码的灵活性。相比之下,Java并没有类似的内置机制,但通过其他方式如上下文对象和反射机制,也可以实现类似的功能。本文将详细探讨这两种语言中这些特殊变量和函数的使用方法及其应用场景。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
author-avatar
大小姐_T_841
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有