爬虫python,python怎么爬虫

  爬虫python,python怎么爬虫

  Python技术-基础篇-常用第三方模块枕头和请求的技术博客_mb5c9304c35413c _博客

  1.枕头

  PIL:Python图像库,这是Python平台上图像处理事实上的标准库。PIL非常强大,但是API非常简单易用。

  由于PIL只支持Python 2.7,而且年久失修,一群志愿者基于PIL创建了一个兼容版本,命名为Pillow,它支持最新的Python 3.x,并增加了许多新功能。因此,我们可以直接安装和使用枕头。

  安装枕头如果安装了Anaconda,枕头已经可用。否则,您需要通过命令行中的pip进行安装:

  $ pip安装pillow如果遇到权限被拒绝安装失败,请添加sudo重试。

  操纵图像查看最常见的图像缩放操作,只需三四行代码:

  从PIL进口图片

  #打开一个jpg图像文件,注意它是当前路径:

  im=Image.open(test.jpg )

  #获取图像大小:

  w,h=im.size

  打印(原始图像尺寸:%sx%s %(宽,高))

  #缩放至50%:

  im.thumbnail((w//2,h//2))

  print(将图像大小调整为:%sx%s % (w//2,h//2))

  #以jpeg格式保存缩放后的图像:

  Im.save(thumbnail.jpg , jpeg )切片、旋转、滤镜、输出文本、调色板等其他功能。都是现成的。

  例如,模糊效果只需要几行代码:

  从PIL导入图像,图像过滤器

  #打开一个jpg图像文件,注意它是当前路径:

  im=Image.open(test.jpg )

  #应用模糊滤镜:

  im2=im.filter(ImageFilter。模糊)

  2.IMSave (blur.jpg , JPEG )具有以下效果:

  PIL的ImageDraw提供了一系列的绘图方法,让我们可以直接绘图。例如,要生成信函验证码图片:

  从PIL导入图像,图像绘制,图像字体,图像过滤器

  随机导入

  #随机字母:

  def rndChar():

  return chr(random.randint(65,90))

  #随机颜色1:

  def rndColor():

  return (random.randint(64,255),random.randint(64,255),random.randint(64,255))

  #随机颜色2:

  def rndColor2():

  return (random.randint(32,127),random.randint(32,127),random.randint(32,127))

  # 240 x 60:

  宽度=60 * 4

  高度=60

  image=Image.new(RGB ,(宽度,高度),(255,255,255))

  #创建字体对象:

  font=image font . truetype( arial . TTF ,36)

  #创建一个绘图对象:

  draw=ImageDraw。绘制(图像)

  #填充每个像素:

  对于范围内的x(宽度):

  对于范围内的y(高度):

  draw.point((x,y),fill=rndColor())

  #输出文本:

  对于范围(4)中的t:

  draw.text((60 * t 10,10),rndChar(),font=font,fill=rndColor2())

  #模糊:

  image=image.filter(ImageFilter。模糊)

  Image.save(code.jpg , jpeg )我们用随机颜色填充背景,绘制文字,最后模糊图像得到验证码图片如下:

  如果在操作过程中报告了错误:

  IO:无法打开资源这是因为PIL找不到字体文件。它可以根据操作系统提供绝对路径,例如:

  /Library/Fonts/Arial.ttf 要了解更多关于PIL的强大功能,请参考枕头官方文档:

  https://pillow.readthedocs.org/

  PIL提供了强大的图像处理功能,可以用简单的代码完成复杂的图像处理。

  2 .请求

  我们已经解释了Python内置的urllib模块,该模块用于访问网络资源。但是使用起来比较麻烦,缺少很多实用的高级功能。

  更好的解决方案是使用请求。是Python第三方库,处理URL资源特别方便。

  安装请求如果安装了Anaconda,则请求已经可用。否则,您需要通过命令行中的pip进行安装:

  $ pip安装请求如果您遇到权限被拒绝安装失败,请添加sudo重试。

  通过GET使用请求访问页面,只需要几行代码:

  导入请求

  r=requests . get( 3359 www.douban.com/)#豆瓣首页

  r .状态代码

  200

  r .文本

  r .文本

  \ n \ n \对于带参数的URL,请将dict作为params参数传入:

  r=requests . get( https://www . douban . com/search ,params={q: python , cat: 1001})

  实际请求的url

  https://www.douban.com/search?Q=python cat=1001 请求自动检测编码,可以使用encoding属性查看编码:

  r编码

   Utf-8 无论响应是文本还是二进制内容,我们都可以用content属性得到bytes对象:

  r .内容

   B\n\n\n\n . requests也很方便,因为对于特定类型的响应,比如JSON,您可以直接获得:

  r=requests . get( https://query . Yahoo APIs . com/v1/public/yql?q=select * from weather . forecast where woeid=2151330 format=JSON )

  r.json()

  {query: {count: 1, created: 2017-11-17T07: 14: 12Z ,当我们需要传入一个HTTP头时,我们传入一个dict作为头参数:

  r=requests . get( https://www . douban . com/,headers={ User-Agent : Mozilla/5.0(iPhone;CPU iPhone OS 11_0像Mac OS X) AppleWebKit})

  r .文本

  \ n \ n \ n \豆瓣(手机版).要发送post请求,只需将get()方法更改为POST(),然后传入data参数作为POST请求的数据:

  r=Requests . post( 3359 accounts . douban . com/log in ,data={ form _ email : ABC @ example . com , form _ password : 123456 })Requests默认使用application/x-www-form-urlencode。如果要传递json数据,可以直接传入JSON参数:

  params={key: value}

  R=requests.post (URL,JSON=params) #内部自动序列化类似于JSON。上传文件需要更复杂的编码格式,但是requests将其简化为files参数:

  upload _ files={ file :open( report . xls , rb)}

  R=requests.post (URL,files=upload _ files)读取文件时,一定要使用 rb ,即二进制模式读取,这样得到的字节长度就是文件长度。

  通过用PUT()、DELETE()等替换post()方法。您可以通过put或delete请求资源。

  除了容易获得响应内容,requests还非常简单地获得HTTP响应的其他信息。例如,获取响应头:

  r .标题

  { Content-Type : text/html;charset=utf-8 , Transfer-Encoding: chunked , Content-Encoding: gzip ,}

  r.headers[Content-Type]

  文本/html;Charset=utf-8requests对cookie进行了特殊处理,这样我们就可以轻松地获取指定的cookie,而无需解析它们:

  r.cookies[ts]

  Example_Cookie_12345 要在请求中传入Cookie,只需准备一个dict传入Cookie参数:

  cs={token: 12345 ,状态: 正在工作 }

  R=requests.get(url,cookies=cs)最后,要指定超时,请传入以秒为单位的超时参数:

  R=requests.get (URL,timeout=2.5) #超时后2.5秒摘要用请求获取URL资源,就这么简单!

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: