• 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+'目录!')
  • 相关阅读:
    Python eval 函数妙用
    502与504故障分析与解决方法
    [转]谈谈select, iocp, epoll,kqueue及各种网络I/O复用机制
    计算阶乘n!末尾0的个数
    C++中的Overload、Override和Overwrite
    C++中的空类与空结构体大小
    多线程编程之优先级翻转问题
    数据库原理之事务(二)
    数据库原理之事务(一)
    NoSQL之基础篇
  • 原文地址:https://www.cnblogs.com/zzqc/p/10235115.html
Copyright © 2020-2023  润新知