python 爬虫基础

爬虫分为两种:通用爬虫和聚焦爬虫

  1. 通用爬虫搜索引擎系统(百度,谷歌,搜狗等)。

主要是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

2.聚焦型爬虫是面向特定需求的一种网络爬虫程序,它与通用爬虫的区别在于:聚焦爬虫在网络实施页面抓取的时候会对内容进行筛选和处理,尽量保证只抓取需求相关的信息

http协议

  • http协议是一个超文本传输协议,是一种发布和接受HTML页面的方法,默认的服务器端口是80端口

https协议

  • https协议是http协议的加密版本,实在http下加入SSL层,默认服务器端口是443端口

URL详解

  • 一个URL由六部分组成

    1. Schems:代表的是访问的协议,一般为http或者https以及ftb等。

    2. Host:主机名|域名,比如www.baidu.com

    3. Port:端口号,当你访问一个网站的时候,浏览器默认使用80端口(443端口)

    4. Query-string:查询字符串,比如www.baidi.com/s?wd=python

    5. Anchor:锚点,后台一般不用管,前端用来做页面定位的

URL链接

  • 在浏览器中请求一个url,浏览器会对这个url进行一个编码,除去英文字母,数字和部分符号外,其他部分全部使用百分号+十六进制码值进行编码

常用的请求方法

  1. Get请求:一般情况下,只从服务器获取数据下来,并不会对服务器资源产生任何影响的时候会使用get请求

  2. Post请求:向服务器发送数据(登录),上传文件等,会对服务器资源产生影响的时候会使用post请求

urllib

在Python3的urllib库中,所有和网络请求相关的方法,都被聚集到urllib.request模块下面了

urlopen方法:(向浏览器请求一个url)

  • import urllib.request
    url='https://www.baidu.com'
    ​
    data={'word':'hello'}
    data=bytes(urllib.parse.urlencode(data),encoding='utf-8')
    ​
    response=urllib.request.urlopen(url,data,timeout=2)
    ​
    *data数据需要解析才能使用
    ​
  • 参数url,data,timeout

  • url:向浏览器请求的链接

  • data:请求的数据,如果设置了这个值,那么将是post请求

  • timeout:请求一个超时时间

urlretrieve方法

  • 这个函数可以将网页上的一个文件保存到本地

    import urllib.request
    ​
    urllib.request.urlretrieve(url,'filename')
    ​
  • 参数url,filename

  • url:文件的链接

  • filename:保存的文件地址,名

urlencode方法

  • 用浏览器发送的请求,如果是包含中或者其他特殊符号,那么浏览器会自动给我们进行编码。而如果用代码发送请求,那么就必须手动的进行编码,这时候就应该使用urlencode函数来实现。urlencode可以把字典数据转换为url编码的数据。

parse_qs方法

  • 这个函数可以将经过编码后的参数进行解码,与urlencode函数相反

urlparse方法

  • 有时候拿到一个URL,想要对这个url的各个组成部分进行分割,那么可以使用urlparse来进行分割

  • urllib.parse.urlparse(url)
  • 参数url为想要分割的链接、

urlsplit方法

  • 这个方法与urlparse函数基本一样,唯一区别就是多了一个params属性

request.Request

  • 如果想要在请求的时候增加一些请求头,那么就可以使用request.Requrst类来实现

  • request.Request('url',headers=headers,data=data)
  • headers信息的作用是用爬虫请求网页时伪装一个头部信息使浏览器识别不出来是爬虫请求

  • data参数必须使用urlencode进行编码

proxyHandler方法

  • 有时候频繁使用一个ip进行爬去信息时,网页会将ip地址加入黑名单,那么就不能继续访问网页了,而proxyHandler方法可以实现代理ip

  • url='https://www.baidu.com'
    handler=urllib.request.ProxyHandler({"协议":"ip:端口"})
    opener=request.build_opener(handler)
    res=request.urlopen(url)
    opener.open(res)
上一篇:python网络编程


下一篇:简单的python爬虫图片获取