ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python爬虫学习(一)

2021-10-05 10:01:19  阅读:152  来源: 互联网

标签:None 请求 Python Request request 爬虫 urllib 学习 urlopen


1.使用urllib库

urllib库是python内置的HTTP请求库,包含4个模块:
1.request:是最基本的http请求模块,可以用来模拟发送请求,就像在浏览器里输入网址按回车一样,只需要给库方法传入URL和其他参数,就可以实现这个过程了。
2.error:异常处理模块。
3.parse:一个工具模块,提供许多URL处理方法,比如拆分,解析,合并等。
4.robotparser:主要用来识别网站的robot.txt文件,然后判断哪些网站可以爬,它用的比较少。
1.1发送请求
1.urlopen()方法
使用urlopen()方法模拟浏览器发送请求,以python官网为例:

# -*- coding: utf-8 -*-
import urllib.request

response=urllib.request.urlopen('http://www.python.org')
#爬取python官网
print(response.read().decode('utf-8'))

print(type(response))

用type()方法查看输出类型,是一个HTTPResponse类型的对象,主要包含read(),readinto(),getheader(name),getheader(),fileno()等方法,以及msg,status,reason,debuglevel,closed等属性。
read()方法可以得到返回网页的内容,satus可以得到返回结果的状态码,如200代表成功,404代表未找到网页。
如:

print(response.status)
200

2.urlopen()的参数用法
urlopen()函数的API:
urllib.request.urlopen(url,data=None,[timeout, ]*,cafile=None,capath=None,cadefault=False,context=None)

  • data参数:可选参数,如果传递了这个参数就不再是get方式,而是post方式。
  • timeout参数:用于设置超时时间,单位秒,意思是如果超出这个时间还没有得到响应,就是抛出异常。可以实现控制一个网页如果长时间未响应,就跳过它的抓取,可以用try except语句实现。
    2.Request()方法
    Request()方法可以构建更完整的请求,如需要在请求中加入Headers等信息。
    Request()用法如下:
import urllib.request
request=urllib.request.Request('http://python.org')
reslib.request.urlopen(request)
print(response.read().deponse=urlcode('utf-8'))

Request()方法构造如下:
urllib.request.Request(url,data=None,hesders={},origin_req_hostt=None,unverifiable=False,method=None)
headers是一个字典,它就是请求头,可以通过headers参数直接构造,也可以通过调用实例的add_header()方法添加。
添加请求头最常用的方法就是通过修改User-Agent来伪装浏览器,默认的User-Agent是Python-urllib,可以通过修改它来伪装浏览器。

标签:None,请求,Python,Request,request,爬虫,urllib,学习,urlopen
来源: https://blog.csdn.net/weixin_42695959/article/details/120610763

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有