• 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+'目录!')
  • 相关阅读:
    idea 新建maven项目时,避免每次都需要指定自己的maven目录
    springboot2.X版本得@Transactional注解事务不回滚不起作用
    SpringBoot事务注解@Transactional
    #{}, ${}取值区别
    Mybaits多个参数的传递
    Mybaits基本的CURD操作
    mappers:将sql映射注册到全局配置中
    Mybaits配置多个数据库操作sql环境
    为java类起别名
    Mybaits成长之路
  • 原文地址:https://www.cnblogs.com/zzqc/p/10235115.html
Copyright © 2020-2023  润新知