zyc183369 发表于 2020-6-5 16:52

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 16:02

本帖最后由 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)

王星星 发表于 2020-6-5 17:08

cl19980429 发表于 2020-6-5 17:14

可以的

zdnyp 发表于 2020-6-5 17:44

代码缩进都不搞一下的么...

RizeBo 发表于 2020-6-5 17:50

aristan 发表于 2020-6-5 18:03

学习了谢谢楼主

a5228172 发表于 2020-6-5 19:21

加个延迟估计不会500

fanvalen 发表于 2020-6-5 21:46

恐怕是你没加headers导致被拒吧,延时用time模块中的sleep(5)

BBMonkey 发表于 2020-6-6 09:58

一直想学习下代码,有机会把这些都给整明白{:1_918:}{:1_918:}

fls 发表于 2020-6-6 10:08

{:1_927:} 鼓励~之前也写过一个从这个站爬表情的脚本,根据类型分类+多进程的
页: [1] 2
查看完整版本: Python爬取表情包