
本帖最后由 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的自己都去爬了,不会的都在等你爬好的资源。
