Python爬取表情包
可早就会Python基础了但是没有实战过百度搜表情包看到一个网站
就突发奇想papa试试
00v0.jpg
于是就有了以下代码好多知识点用的时候不知道用哪个了
第一次使用Python爬取互联网上的东西
好歹算把图爬下来了挺基础的适合新手练手
0dj4.jpgimport urllib
import requests
import re
def picdown(m):
url = 'https://www.fabiaoqing.com/biaoqing/lists/page/%d.html'%m #通过形参可以自定义页数
r = requests.get(url) #获取url页面
# print(r.text) #自己看
r1 = r.text # 爬取界面数导入r1
r2 = re.findall('<div.*?<a.*?<img.*?data-original="(.*?)".*?</a>', r1, re.S)
#正则过滤图片链接
#re.S整体匹配,不限于一行匹配
#匹配http://wx2.sinaimg.cn/bmiddle/006APoFYly1geq2ghyb7nj30gs0gs3yx.jpg
for i in range(0, len(r2)):
print(i, r2) #打印整个列表(链接)
cc = r2
c1 = cc[-8:]
#取字符后几位(因为两种格式gif和jpg)待会命名用
#print(c1)
# 将远程图片下载到本地,第二个参数(c1)就是要保存到本地的文件名
urllib.request.urlretrieve(cc, 'D:/python/表情包/%s'%c1)
print("第%d张图片下载成功" %i)
#给自己个提示
#这个还想加个爬取时间间隔 但是我不会
for i in range(1,2):
#2可以替换 最高不超过200页
picdown(i)
"""
通过这次爬取感觉到了
1.正则用的不好
2.不会加爬取时间间隔 爬了500M 被主机中断了远程连接 不知所措
3.反正就是感觉自己可菜 感觉写出来的代码丑 感觉还可以再优化
""" 本帖最后由 zyc183369 于 2020-6-6 17:24 编辑
import urllib
import requests
import re
def picdown(m):
headers = {
'User - Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 78.0.3904.108 Safari / 537.36',
'Cookie':'__gads=ID=7bcdde2f7833c989:T=1591256329:S=ALNI_Mb0rB43nTRvuClCMnFdwTnUyG7iAA; UM_distinctid=1727e44b69b27f-02086d895f4aff-4e4c0f20-1fa400-1727e44b69e33c; PHPSESSID=q4tiusrjbdk84sjjavo2db93qf; CNZZDATA1260546685=1753245676-1591253670-https%253A%252F%252Fwww.baidu.com%252F%7C1591432820'
}
url = 'https://www.fabiaoqing.com/biaoqing/lists/page/%d.html' % m# 通过形参可以自定义页数
r = requests.get(url,headers = headers)# 获取url页面
r1 = r.text# 爬取界面数导入r1
r2 = re.findall('<div.*?<a.*?<img.*?data-original="(.*?)".*?</a>', r1, re.S)
for i in range(0, len(r2)):
print(i, r2)
cc = r2
c1 = cc[-8:]
urllib.request.urlretrieve(cc, 'D:/python/表情包/%s' % c1)#这里自定义保存地址
print("第%d页第%d张图片下载成功"%(m,i))
for i in range(80, 180):
picdown(i)
可以的
代码缩进都不搞一下的么... 学习了谢谢楼主 加个延迟估计不会500 恐怕是你没加headers导致被拒吧,延时用time模块中的sleep(5) 一直想学习下代码,有机会把这些都给整明白{:1_918:}{:1_918:} {:1_927:} 鼓励~之前也写过一个从这个站爬表情的脚本,根据类型分类+多进程的
页:
[1]
2