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都包含在一个

语句内,然后搞个正则提取出所有图片的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'
.*?(https.*?(?:jpg|gif)).*?
') 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+'目录!')

 

转载于:https://www.cnblogs.com/zzqc/p/10235115.html

你可能感兴趣的:(requests库/爬取zhihu表情包)