之前的“首页无圣光图站”,用python的scrapy框架爬下来

本帖最后由 nongyf 于 2020114 00:10 编辑
2020114:修正一个错误

之前的“首页无圣光图站”,用python的scrapy框架爬下来

本帖最后由 nongyf 于 2020114 00:10 编辑

2020114:修正一个错误,spider.py里的yield item应该要放在for循环里,否则只能下载套图里每一页的最后一张图片。 之前看到@junomak大神福娃写的爬虫“首页的无圣光图站,写了个python小爬虫”,回去试了一下,只能下个七八张,就下不动了,估计是我电脑或网络问题吧 接着又看到有大神福娃用的“之前首页的无圣光图站,火车采集规则”,也试了,一会就被封了….

实在是,想哭…… 好吧,自己来,正好刚学了scrapy框架,小试牛刀,在吾爱发过,怕有些福娃没看到,在此再发一次。。。

好 了,进 入 正 题 :

1、由于我的win10装了2.7和3.7两个版本的python,所以创建scrapy项目用python3 m scrapy startproject fa24spider

2、用pycharm进入项目目录,首先设计items.py,先把可能需要的放进去,到时不用直接删除或注释掉就好了

# * coding: utf8 *

#!/usr/bin/env python3

# [url=home.php?mod=space&uid=238618]@Time[/url] : 2020/1/7 11:13

# [url=home.php?mod=space&uid=686208]@AuThor[/url] : ZekiLee[/i][/color]# Define here the models for your scraped items

#

# See documentation in:

# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy

class Fa24SpiderItem(scrapy.Item):

# define the fields for your item here like:

# 套图名称

pic_title = scrapy.Field()

# 图片地址

pic_url = scrapy.Field()

# 图片名称

pic_name = scrapy.Field()

# 保存地址

pic_path = scrapy.Field()

# 反爬虫用的反重定向地址

referer = scrapy.Field()复制代码

3、开始做爬虫主程序spiders.py

# * coding: utf8 *

#!/usr/bin/env python3

# [url=home.php?mod=space&uid=35117]@time[/url] : 2020/1/7 11:13

# @Author : ZekiLee

import scrapy

from fa24spider.items import Fa24SpiderItem

class SpidersSpider(scrapy.Spider):

name = ‘spiders’

allowed_domains = [’24fa.top’]

top_url = “https://www.24fa.top”

start_urls = [‘https://www.24fa.top/MeiNv/index.html’]

def parse(self, response):

“””

每页的套图链接

“””

title_link_list = response.xpath(‘//td[@align=”center”]/a/@href’).extract()

for title_link in title_link_list:

title_url = title_link.replace(“..”, self.top_url)

yield scrapy.Request(url=title_url, callback=self.pic_parse)

# 做翻页处理,如果有下一页,则取出下一页的地址,yield:返回给parse函数真理

next_page_link = response.xpath(‘//div[@class=”pager”]//a[@title=”后页”]/@href’).extract_first(“”)

if next_page_link:

next_page_url = next_page_link.replace(“..”, self.top_url)

yield scrapy.Request(url=next_page_url, callback=self.parse)

def pic_parse(self, response):

“””

进入套图链接后,处理每一页图片链接

“””

item = Fa24SpiderItem()

title = response.xpath(‘//h1[@class=”title2″]/text()’).extract()[0]

item[“pic_title”] = title

# 获取referer

referer = response.url

item[“referer”] = referer

pic_url_list = response.xpath(‘//div[@id=”content”]//img/@src’).extract()

for pic_link in pic_url_list:

pic_name = pic_link[10:] #图片名称取了图片链接的后10位字符

item[“pic_name”] = pic_name

pic_url = pic_link.replace(“../..”, self.top_url)

item[“pic_url”] = pic_url

yield item

# 同样,套图页面里也是分页了的,所以同样要处理下一页

next_page_link = response.xpath(‘//a[@title=”下一页”]/@href’).extract_first(“”)

if next_page_link:

next_page_url = next_page_link.replace(“../..”, self.top_url)

yield scrapy.Request(url=next_page_url, callback=self.pic_parse)复制代码 4、进入settings.py进行设置

4.1 设置useragent

# Crawl responsibly by identifying yourself (and your website) on the useragent

USER_AGENT = ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36’复制代码 接着就是别的设置

# Obey robots.txt rules

# 不遵守爬虫协议,否则……你懂的

ROBOTSTXT_OBEY = False

IMAGES_URLS_FIELD = “pic_url”

#自定义保存路径

IMAGES_STORE = “G:\\Fa24”

# Configure maximum concurrent requests performed by Scrapy (default: 16)

#CONCURRENT_REQUESTS = 32

# Configure a delay for requests for the same website (default: 0)

# See https://docs.scrapy.org/en/latest/topics/settings.html#downloaddelay

# See also autothrottle settings and docs

# 下载延迟,可以自己设置,太快可能被网站ban掉

DOWNLOAD_DELAY = 3复制代码 4.2 自定一个pipelines,后面的数字自己改吧,数字越小,就越优先

# Configure item pipelines

# See https://docs.scrapy.org/en/latest/topics/itempipeline.html

ITEM_PIPELINES = {

# ‘fa24spider.pipelines.Fa24SpiderPipeline’: 300,

‘fa24spider.pipelines.Fa24TopPipeline’:1,

}复制代码 5、基本上setting设置好了,重头戏来了,该怎么下载,来看pipelines.py ,基本上都有注释说明了

复制代码

# * coding: utf8 *

#!/usr/bin/env python3

# @Time : 2020/1/7 11:13

# @Author : ZekiLee[/i][/color]# Define your item pipelines here复制代码

6、大功告成!pycharm下面的Terminal执行

>python3 m scrapy crawl spiders

然后…..就飞法法哗啦啦下载啦!!

再请废话两句: 我用的是pycharm编辑,如果用别的也可以,或者也可以自建一个运行带scrapy的py文件,不用输命令

2楼:然后哪??让我自己去做爬虫??

3楼:虽然看不懂,但感觉好厉害的样子

(罓痢鈿喞犥溨柪犃♀殕)╭∩╮!

4楼:看来真的研究研究python怎么用了

5楼:不明觉厉!我以为是有附件图下载看看呢

6楼:scrapy是个好东西,可惜我不会用{:9001:}

7楼:吾爱过来的,我发现了。。。

8楼:技术含量有点高呢

9楼:我写的HVIEWER采集规则不香吗?

10楼:真是就怕流氓有文化

看出来程序员早早掉头发不光是加班的原因

11楼:hiking 发表于 202019 08:59

我写的HVIEWER采集规则不香吗?

哥们你头像有高清大图吗?

12楼:一脸懵逼,不过感觉很厉害的样子,支持下

13楼:qingchen9016 发表于 202018 18:46

然后哪??让我自己去做爬虫??

要不然呢,这里只是个思路,希望一样有兴趣的福娃一起完善

14楼:笑熬浆糊4 发表于 202018 22:43

scrapy是个好东西,可惜我不会用{:9001:}

那个帖子也是我发的,哈哈哈

15楼:906662702 发表于 202019 00:16

技术含量有点高呢

这个的技术含量还不算高,我也是刚刚入门的小白

16楼:哇,不明觉厉,冲着无圣光进来的{:9001:}

17楼:谁爬完,直接分享出来,下载我是可以的

18楼:能不能发个给作视频呀,圣光不重要,就是想学点技术

19楼:分享下吧,不然大家都去爬人家的网站,把人薅秃了。

20楼:kasumi 发表于 202019 19:07

分享下吧,不然大家都去爬人家的网站,把人薅秃了。

太多了,没时间爬….每一页有168个套图,一共43页;每个套图大概有平均七八页,多的有十一二每页有4张图片………..

有二三十万张图片….公司的网络速度龟慢,等哪个福娃爬完或用火车头采集完再放上来吧

21楼:毛小离 发表于 202019 16:35

能不能发个给作视频呀,圣光不重要,就是想学点技术

如果有些python基础的,可以看这个scrapy框架专题:

链接: https://pan.baidu.com/s/1LBTttXv8nMOJ18QMctZ3rg 提取码: djw3 复制这段内容后打开百度云资源手机App,给作更方便哦

我也是这学一点那里抄一点就弄出来的,专门的这个爬虫视频教学我做不出来

22楼:老师讲python没懂的, 都在fuliba学会了。我谢谢你们八辈子

23楼:楼主把代码打包上传到github吧

24楼:萌新完全看不懂这是啥给作。。

25楼: 表示无效 下载不了···

26楼:zhangzhi0000 发表于 2020114 12:26

楼主把代码打包上传到github吧

好主意,今天下班回去就弄上去

27楼:acfunny 发表于 2020117 03:45

表示无效 下载不了···

不会吧,等我把代码放到github上去你再试试

28楼:路过看看,完全不懂的说

29楼:我在想是不是会py的自己都去爬了,不会的都在等你爬好的资源。

(0)

相关推荐