zoukankan      html  css  js  c++  java
  • requests库/爬取zhihu表情包

      先学了requests库的一些基本操作,简单的爬了一下。

      用到了requests.get()方法,就是以GET方式请求网页,得到一个Response对象。不加headers的话可能会400error所以加上: page=requests.get(url='https://www.zhihu.com/question/46508954',headers=hd)

      还用到了一些os模块的方法,os.mkdir(x)用于在x目录下创建一个文件夹,os.path.exists(path)用于检测当前路径是否存在。

      还有就是regex了,由于很简单就不说了。

      先用requests.get()进入知乎问题界面,然后观察html发现每个jpg都包含在一个<figure>语句内,然后搞个正则提取出所有图片的url,注意有jpg和gif两种区分下。然后对每个图片进行下载,当做二进制文件。一开始有若干图片会400加上headers就好了。

     1 import re
     2 import requests
     3 import os
     4 import random
     5 hd={
     6         'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 98 Safari/537.36'
     7 }
     8 adr='C:/face'
     9 def dowload(i,url):
    10     global adr
    11     if url==None:
    12         return
    13     res=requests.get(url,headers=hd)
    14     if url.find('jpg')!=-1:
    15         with open(adr+'/zhihu'+str(i)+'.jpg','wb') as f:
    16             f.write(res.content)
    17     elif url.find('gif')!=-1:
    18         with open(adr+'/zhihu'+str(i)+'.gif','wb') as f:
    19             f.write(res.content)
    20     else:
    21         print('error',url)
    22 def gethtml():
    23     page=requests.get(url='https://www.zhihu.com/question/46508954',headers=hd)
    24     page.encoding='utf-8'
    25     pattern=re.compile(r'<figure>.*?(https.*?(?:jpg|gif)).*?</figure>')
    26     res=pattern.findall(page.text)
    27     global adr
    28     if os.path.exists(adr)==False:
    29         os.mkdir(adr)
    30     else:
    31         adr=adr+str(random.randint(1,1000))
    32     pre,tot=0,len(res)
    33     for i,url in enumerate(res):
    34         dowload(i,url)
    35         rate=int((i+1)/tot*100)
    36         if rate!=pre:
    37             pre=rate
    38             print(str(rate)+'%')
    39 gethtml()
    40 print('图片已保存在'+adr+'目录!')
  • 相关阅读:
    salt+jenkins+gitlab+ecs构建公司部署平台
    解决openstack实例主机名后缀问题
    测试CentOS-7-x86_64-Minimal-1708.iso这种光盘安装效果
    dbca建库--linux上使用vnc图形化安装oracle10g版本
    使用mediainfo工具统计每个视频文件(媒体文件)播放时长
    rsync命令简单用法介绍
    winscp工具和xshell连接linux机器时切换到root账户
    zabbix和iptables的nat表结合使用
    adb和机顶盒一些常识
    VirtualBox虚拟机禁止时间同步
  • 原文地址:https://www.cnblogs.com/zzqc/p/10235115.html
Copyright © 2011-2022 走看看