null119 发表于 2018-2-12 20:29

python scrapy 爬取某表情网站表情图【源码+GIF表情包下载】

本帖最后由 null119 于 2018-2-12 20:49 编辑

先上图:


源代码【python才学几天,代码丑陋,还请各位多多包涵】:

import scrapy
import os,sys
import requests
import re
class scrapyone(scrapy.Spider):
      name = "stackone"
      start_urls = ["http://qq.yh31.com/ql/bd/"]
      def parse(self,response):
                hrf=response.xpath('//*[@id="main_bblm"]/div/dl/dd/li')
                for li in hrf:
                        item={}
                        href=li.xpath('a/@href').extract()
                        hreftext=li.xpath('a/text()').extract()
                        full_url = 'http://qq.yh31.com'+ ''.join(list(href))
                        hreftext=''.join(list(hreftext))
                        #文件夹名称
                        if hreftext=='>更多>':
                              continue
                        path = 'C:\GIF'
                        if not os.path.exists(path):
                              os.makedirs(path)
                        item['dirname']=hreftext
                        yield scrapy.Request(url=full_url,meta={'key':item},callback = self.parse1)

      def parse1(self,response):
                ite={}
                full_url=[]               
                url1 = response.xpath('//*[@id="pe100_page_infolist"]/a/@href').extract()
                url2 = response.xpath('//*[@id="pe100_page_infolist"]/a/@href').re('\d+')
                url1 = ''.join(url1)
                url1 = url1.split('_')
                url2 = ''.join(url2)
                ite['dirn']=response.meta['key']['dirname']
                for i in range(1,int(url2)+1):
                        full_url='http://qq.yh31.com'+url1+'_'+str(i)+'.html'
                        #print(full_url)
                        yield scrapy.Request(url=full_url,meta={'key1':ite},callback = self.parse2)

      def parse2(self,response):
                p1=response.meta['key1']['dirn']
                resp = response.xpath('//*[@id="main_bblm"]/div/li/dt/a')
                path = 'C:\GIF\\'+''.join(p1)
                if not os.path.exists(path):
                        os.makedirs(path)
                for lst in resp:
                        alt = lst.xpath('img/@alt').extract()
                        src = lst.xpath('img/@src').extract()
                        src = 'http://qq.yh31.com'+ ''.join(list(src))
                        alt = ''.join(list(alt))
                        html=requests.get(src)
                        with open(path+'\\'+alt+'.gif', 'wb') as file:
                           file.write(html.content)



脚本执行方式:cmd-->切换到脚本所在目录-->scrapy runspider xxxx.py

执行后会自动根据GIF分类在c:\gif文件夹下建立相应文件夹存储gif图片







不想麻烦的就直接到百度网盘下载吧,我已经传上去了



链接:https://pan.baidu.com/s/1c3YYTfq 密码:1t8h

null119 发表于 2018-2-12 23:57

天天404 发表于 2018-2-12 21:38
请问楼主学了多长时间的py?能分享下在哪学的吗我也想学...先谢谢啦

三、四天吧,从百度网盘上下载的,不过没转存,所以也找不到了,目录如下
01_PYTHON基础、进阶、项目(Python零基础学员可先看)
02_Python 视频 分布式 爬虫Scrapy入门到精通 Redis MongoDB教程
03_七月算法_Python爬虫项目班
04_Python3爬虫入门到精通课程视频附软件与资料 34课

天天404 发表于 2018-2-13 18:56

null119 发表于 2018-2-12 23:57
三、四天吧,从百度网盘上下载的,不过没转存,所以也找不到了,目录如下
01_PYTHON基础、进阶、项目(P ...

非常感谢您的建议,祝dalao生活愉快:loveliness:

Ifover 发表于 2018-2-12 20:35

python好玩啊
我也刚学爬了12306,准备学Qt然后做个窗体

稀罕谁 发表于 2018-2-12 20:42

谢谢,学写一下

冷冷的风 发表于 2018-2-12 20:43

辛苦楼主了。

Zhang.J 发表于 2018-2-12 20:49

感谢分享

DE377DE477 发表于 2018-2-12 20:49

谢谢楼主分享

BBB老二 发表于 2018-2-12 21:03

感谢分享!

天天404 发表于 2018-2-12 21:38

请问楼主学了多长时间的py?能分享下在哪学的吗{:1_904:}我也想学...先谢谢啦

倔强的丫头 发表于 2018-2-12 21:50

如果楼主能做到 采集并直接发布在网站 请联系我 谢谢

風雲 发表于 2018-2-12 23:03

支持楼主,试试
页: [1] 2 3 4 5
查看完整版本: python scrapy 爬取某表情网站表情图【源码+GIF表情包下载】