创造太阳 发表于 2020-2-29 00:22

为了防止女朋友怼我,我就先用python爬了3600个怼人表情包等她来战!

感谢大家的关心,女朋友今天不再跟我下五子棋了,(被杀了几十盘还被我指出在什么时候明明有机会赢我),就先睡了!
按照大家的分析,我觉得我很有可能会被怼。(虽然我们之间没有互怼过)!
毛爷爷教导我们:“不打无准备之仗,不打无把握之仗!”
所以我就要提前屯点怼人表情包!
谈,大门敞开!
打,奉陪到底!
代码如下(这次就3600个,不算过分吧!):
import requests
from lxml import etree



#怼人表情包网址http://www.doutula.com/search?type=photo&more=1&keyword=%E6%80%BC%E4%BA%BA&page=8
#规律一眼就发现是改个数字就行了,就用for i inrange()

for i in range(1,50):    #上次给女朋友发了20000句情话,你们说发的太多,所以这次就爬50页,也就50*72=3600个表情包,打败她应该够了,不够再爬
    url = "http://www.doutula.com/search?type=photo&more=1&keyword=%E6%80%BC%E4%BA%BA&page=" + str(i)    #用数字拼接网址
    res = requests.get(url).text    #用requests.get()函数获得拼接网址的数据
    #print(res)    #打印显示一下
    res_xpath = etree.HTML(res)    #转换为xpath可用的格式
    # 用xpath提取表情包的具体网址
    bqb_urls = res_xpath.xpath('//*[@id="search-result-page"]/div/div/div/div/div/div/div//img/@data-original')
    for bqb_url in bqb_urls:    #依次循环提取表情包网址
      try:
            res = requests.get(bqb_url).content    #获得二进制数据
            file_name = bqb_url.split('/')[-1]    #表情包名字就取网址中的最后一个
            with open (file_name, 'wb') as f:    #用“wb”模式打开,没有就新建,肯定是需要自动新建的
                f.write(res)    #将获得的二进制数据写到文件中
      except:
            pass    #3600个,失败几个无所谓的,不在乎
print("表情包爬取完成,准备战斗吧!")

我就等着她来和我战斗!
好期待啊,这次该让她见识见识我情话攻势之后的怼人表情包攻势!
各位朋友们也可以准备一些,这样就能打败女朋友了!

hj185769 发表于 2020-2-29 00:56

楼主又做梦了,你有女朋友???

CHANGEWCE 发表于 2020-2-29 00:43

一看ID又是你这个狠人。

Smilience 发表于 2020-11-25 12:02

创造太阳 发表于 2020-11-25 11:50
这个网站取消了“怼人”的搜索,可以尝试换一下别的关键词。
主要是方法和思路,可以尝试一下其他关键词 ...

找到原因了 打log发现返回的是404 未拿到数据,https请求 我这边模拟浏览器访问可以了import requests,os

from lxml import etree



#怼人表情包网址http://www.doutula.com/search?type=photo&more=1&keyword=%E6%80%BC%E4%BA%BA&page=8
#规律一眼就发现是改个数字就行了,就用for i inrange()
print("正在下载中......")
for i in range(1,50):    #上次给女朋友发了20000句情话,你们说发的太多,所以这次就爬50页,也就50*72=3600个表情包,打败她应该够了,不够再爬
    url = "https://www.doutula.com/search?type=photo&more=1&keyword=怼人&page=" + str(i)    #用数字拼接网址
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/51.0.2704.63 Safari/537.36'}
    savepath="D:\\表情图\\"
    res = requests.get(url=url, headers=headers).text    #用requests.get()函数获得拼接网址的数据
   #print(res)    #打印显示一下
    res_xpath = etree.HTML(res)    #转换为xpath可用的格式
    # 用xpath提取表情包的具体网址
    bqb_urls = res_xpath.xpath('//*[@id="search-result-page"]/div/div/div/div/div/div/div//img/@data-original')
    for bqb_url in bqb_urls:    #依次循环提取表情包网址
      try:
            res = requests.get(bqb_url).content    #获得二进制数据
            file_name = bqb_url.split('/')[-1]    #表情包名字就取网址中的最后一个
            print(file_name)
            if not os.path.exists(savepath):
                os.makedirs(savepath)
            with open (savepath+file_name, 'wb') as f:    #用“wb”模式打开,没有就新建,肯定是需要自动新建的
                f.write(res)    #将获得的二进制数据写到文件中
               
      except:
            pass    #3600个,失败几个无所谓的,不在乎
    print("第"+str(i)+"页已下载完毕!!!")   
print("表情包爬取完成,准备战斗吧!")

安卓逆向一切 发表于 2020-8-26 14:42

不是,我没懂表情包存哪里了{:1_937:}

创造太阳 发表于 2020-3-7 13:34

1ceberg9 发表于 2020-3-7 13:28
bqb_urls = res_xpath.xpath('//*[@id="search-result-page"]/div/div/div/div/div/div/div//img/ ...

审查元素,找到要的信息,右键,复制xpath

小神净 发表于 2020-3-2 16:25

李辉! 发表于 2020-3-1 20:07
我缺一个这样子的女朋友,太难了。太羡慕楼主了

卧槽,五姑娘你也缺。。。。:rggrg

道冲渊风 发表于 2020-2-29 08:38

女友未至,斗图先行,注孤生的节奏{:1_923:}

11833 发表于 2020-2-29 00:56

怼赢了然后呢{:1_926:}

bfwl 发表于 2020-2-29 00:42

代码了解了,请问女朋友是你发还是国家发呢

elevenli 发表于 2020-2-29 00:57

可以啊,我也来学习学习

吾爱无爱321 发表于 2020-2-29 01:00

楼主,你醒醒,你没有女朋友{:1_925:}

chen556656 发表于 2020-2-29 01:05

狠人,88

hongge 发表于 2020-2-29 01:05

请问女朋友在哪领{:301_975:}

alexkillers 发表于 2020-2-29 01:11

醒醒,你和五姑娘在斗图呢
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 为了防止女朋友怼我,我就先用python爬了3600个怼人表情包等她来战!