"""
#   urllib:urllib库,它是Python内置的HTTP请求库,也就是说不需要额外安装即可使用。它包含如下4个模块。
#   request:它是最基本的HTTP请求模块,可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样,只需要给库方法传入URL以及额外的参数,就可以模拟实现这个过程了。
#   error:异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作以保证程序不会意外终止。
#   parse:一个工具模块,提供了许多URL处理方法,比如拆分、解析、合并等。
#   robotparser:主要是用来识别网站的robots.txt文件,然后判断哪些网站可以爬,哪些网站不可以爬,它其实用得比较少。
"""
import urllib.request
import urllib.parse
import socket
import urllib.error"""
#   语法:urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
#   功能:获取网站的信息
#   url:网站的URL地址
#   data:附加数据,data参数是可选的。如果要添加该参数,并且如果它是字节流编码格式的内容,即bytes类型,则需要通过bytes()方法转化。另外,如果传递了这个参数,则它的请求方式就不再是GET方式,而是POST方式。
#   timeout:超时时间
"""
response = urllib.request.urlopen("https://www.python.org")# 输出返回的网页内容
print(response.read().decode('utf-8'))
#   输出响应的类型:<class 'http.client.HTTPResponse'>
print(type(response))
#   输出响应的状态码,如200代表请求成功,404代表网页未找到等。
print(response.status)
#   输出响应的头信息
print(response.getheaders())
#   输出通过调用getheader()方法并传递一个参数Server获取了响应头中的Server值,结果是nginx,意思是服务器是用Nginx搭建的。
print(response.getheader("Server"))#  这里我们传递了一个参数word,值是hello。它需要被转码成bytes(字节流)类型。其中转字节流采用了bytes()方法,该方法的第一个参数需要是str(字符串)类型,需要用urllib.parse模块里的urlencode()方法来将参数字典转化为字符串;第二个参数指定编码格式,这里指定为utf8。
data = bytes(urllib.parse.urlencode({"word": "hello"}), encoding = "utf-8")
response_data = urllib.request.urlopen("https://httpbin.org/get", timeout=1)print(response.read())try:response_timeout = urllib.request.urlopen("https://httpbin.org/get", timeout = 0.1)
except urllib.error.URLError as e:if isinstance(e.reason, socket.timeout):print("Time Out")request = urllib.request.Request("https://python.org")
response_request = urllib.request.urlopen(request)
print(response_request.read().decode("utf-8"))'''
#   利用urlopen()可以实现最基本请求的发起,但这几个简单的参数不足以构建一个完整的请求。
#   如果请求中加入Headers等信息,就可以利用更加强大的Request类来构建
#   class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
#   url:用于请求URL,这是必传参数,其他都是可选参数
#   data:如果data要传,必须传bytes(字节流)类型的。如果它是字典,可以先用urllib.parse模块里的urlencode()编码
#   headers:是一个字典,它是请求头,我们可以在构造请求时通过headers参数直接构造,也可通过调用请求实例的add_header()方法添加
#   添加请求头最常用的方法就是通过修改User-Agent来伪装浏览器,默认的User-Agent时Python-urllib,我们可以通过修改它来伪装浏览器
#   比如伪装火狐浏览器,可把它设置为:Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11
#   origin_req_host:指的是请求方的host名称或者IP地址
#   unverifiable:表示这个请求是否是无法验证的,默认False,意思就是说用户没有足够权限来选择接收这个请求的结果
#   method:是一个字符串,用来指示请求使用的方法,比如GET、POST、和PUT等
'''
url = 'http://httpbin.org/post'
headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)','Host': 'httpbin.org'
}
dict = {'name': 'Germey'
}
data = bytes(parse.urlencode(dict), encoding='utf8')
req = request.Request(url=url, data=data, headers=headers, method='POST')
response = request.urlopen(req)
print(response.read().decode('utf-8'))

【Python】爬虫学习相关推荐

  1. python爬虫正则表达式实例-python爬虫学习三:python正则表达式

    python爬虫学习三:python正则表达式 1.正则表达式基础 a.正则表达式的大致匹配过程: 1.依次拿出表达式和文本中的字符比较 2.如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符 ...

  2. Python爬虫学习系列教程

    大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...

  3. 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导

    爬虫是大家公认的入门Python最好方式,没有之一.虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就能实现基本的爬虫,零基础也能快速入门,让新手小白体会更大的成 ...

  4. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

  5. Python 爬虫学习 系列教程

    Python爬虫 --- 中高级爬虫学习路线 :https://www.cnblogs.com/Eeyhan/p/14148832.html 看不清图时,可以把图片保存到本地在打开查看... Pyth ...

  6. 从入门到入土:Python爬虫学习|实例练手|爬取LOL全英雄信息及技能||异步加载|初级难度反扒处理|寻找消失的API

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  7. 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  10. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

最新文章

  1. VS2017报错头文件unistd.h
  2. Nginx Slab内存管理
  3. 关于centos 7 中service iptables save 指令使用失败的结局方案
  4. 1.x和2.x的区别
  5. TCP连接吞吐率和线路效率的总结
  6. 折线分割平面(递推dp)
  7. 分支定界 matlab,分支定界法matlab程序
  8. dex2jar工具及问题
  9. WMS仓储条码管理系统解决方案
  10. 小爱音箱连接Windows蓝牙没有声音
  11. 发现的一点点QQ使用技巧
  12. CAN通讯程序C语言,AT90CAN单片机CAN通信模块介绍及软件编程
  13. 【C++ 程序】 TVJ Complex Calculator (v 2.1) 复数计算器
  14. python_多点拟合曲线并计算曲率半径
  15. 语音芯片排行榜,为何唯创知音WT588F语音芯片如此受欢迎
  16. Ubuntu忘记超级用户root密码,重新设置密码
  17. 流浪地球2真实成本多少?怎么参与?找谁参与?安全可靠吗?
  18. 写给当初的你,现在的我
  19. PBC Library Manual(PBC库手册)翻译(一)
  20. itext生成打印(操作PDF)

热门文章

  1. CF438E The Child and Binary Tree 生成函数、多项式开根
  2. 面向对象程序中的常量
  3. hadoop关闭安全模式
  4. 在nginx下配置PATH_INFO的方法,包含新老版本的设置方法,以及$_SERVER[PATH_INFO]和phpinfo()函数的使用方法...
  5. 查看linux下各数据类型的大小
  6. 使用flask的时候遇到的问题及其解答
  7. 解决GIT代码仓库不同步问题
  8. UA MATH563 概率论的数学基础 中心极限定理20 弱收敛的性质
  9. CentOS下首次使用as86汇编器
  10. win32文件读写demo