Scrapy 爬取某网站图片
1. 创建一个 Scrapy 项目,在命令行或者 Pycharm 的 Terminal 中输入:
scrapy startproject imagepix
自动生成了下列文件:

2. 在 imagepixiv/spiders 文件夹下新建一个 imagepixiv.py 文件
3. imagepixiv.py 下的代码:
import scrapy
from urllib.parse import urlencode
import json
from ..items import ImagepixItem
class ImagepixivSpider(scrapy.Spider):
name = 'imagepixiv'
def start_requests(self):
data = {'keyword': '风景'}
base_url_1 = 'https://api.pixivic.com/illustrations?'
for page in range(1, self.settings.get('MAX_PAGE') + 1):
data['page'] = page
params = urlencode(data)
url_1 = base_url_1 + params
yield scrapy.Request(url_1, callback=self.parse)
def parse(self, response):
result = json.loads(response.text)
for image in result.get('data'):
item = ImagepixItem()
item['title'] = image.get('title')
item['id'] = image.get('id')
url = image.get('imageUrls')[0].get('large')
url_rel = 'https://img.pixivic.com:23334/get/' + str(url)
item['url'] = url_rel
yield item
4. items.py 下的代码:
import scrapy
from scrapy import Field
class ImagepixItem(scrapy.Item):
title = Field()
id = Field()
url = Field()
5. pipelines.py 下的代码:
from scrapy import Requestfrom scrapy.exceptions import DropItemfrom scrapy.pipelines.images import ImagesPipeline
class ImagepixPipeline(ImagesPipeline): def file_path(self, request, response=None, info=None): url = request.url file_name = url.split('/')[-1] return file_name
def item_completed(self, results, item, info): image_paths = [x['path'] for ok, x in results if ok] if not image_paths: raise DropItem('Image Downloaded Failed') return item
def get_media_requests(self, item, info): yield Request(item['url'])
6. settings.py 下的代码:
BOT_NAME = 'imagepix'
SPIDER_MODULES = ['imagepix.spiders']
NEWSPIDER_MODULE = 'imagepix.spiders'
MAX_PAGE = 50
FEED_EXPORT_ENCODING = 'utf-8'
IMAGES_STORE = './images'
ITEM_PIPELINES = {
'imagepix.pipelines.ImagepixPipeline': 300,
}
ROBOTSTXT_OBEY = False
7. 在命令行运行:
scrapy crawl imagepixiv
8. 结果:

Scrapy 爬取某网站图片的更多相关文章
- 用scrapy爬取搜狗Lofter图片
用scrapy爬取搜狗Lofter图片 # -*- coding: utf-8 -*- import json import scrapy from scrapy.http import Reques ...
- Java爬虫实践--爬取CSDN网站图片为例
实现的效果,自动在工程下创建Pictures文件夹,根据网站URL爬取图片,层层获取.在Pictures下以网站的层级URL命名文件夹,用来装该层URL下的图片.同时将文件名,路径,URL插入数据库, ...
- scrapy爬取某网站,模拟登陆过程中遇到的那些坑
本节内容 在访问网站的时候,我们经常遇到有些页面必须用户登录才能访问.这个时候我们之前写的傻傻的爬虫就被ban在门外了.所以本节,我们给爬虫配置cookie,使得爬虫能保持用户已登录的状态,达到获得那 ...
- python3 urllib爬取wallhalla网站图片
点我去我的github上看源码 简单使用静态方法爬取https://wallhalla.com/网站的图片 参考: https://blog.csdn.net/cquptcmj/article/det ...
- 使用nodejs+http(s)+events+cheerio+iconv-lite爬取2717网站图片数据到本地文件夹
源代码如下: //(node:9240) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' ...
- 使用Scrapy爬取图书网站信息
重难点:使用scrapy获取的数值是unicode类型,保存到json文件时需要特别注意处理一下,具体请参考链接:https://www.cnblogs.com/sanduzxcvbnm/p/1030 ...
- python3爬取动态网站图片
思路: 1.图片放在<image>XXX</image>标签中 2.利用fiddler抓包获取存放图片信息的js文件url 3.利用requests库获取html内容,然后获取 ...
- 实战爬取某网站图片-Python
直接上代码 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 from bs4 import BeautifulSoup 4 import request ...
- scrapy爬取招聘网站,items转换成dict遇到的问题
pipelines代码 1 import json 2 3 class TencentJsonPipeline(object): 4 def __init__(self): 5 self.file = ...
随机推荐
- POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE
POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...
- 解决WAMP Server与IIS端口冲突问题
版本前提: 腾讯云服务器 windows server 2012 R2 WampServer3.10 64bit 有两种思路 一.修改wamp端口 文件位置 C:\wamp64\bin\apac ...
- MySQL(逻辑分层,存储引擎,sql优化,索引优化以及底层实现(B+Tree))
一 , 逻辑分层 连接层:连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理.授权认证.安全等. 服务层:包括缓存查询.解析器.优化器,这一部分是MySQL核 ...
- 发布机制-灰度发布-例子:QZone
ylbtech-发布机制-灰度发布-例子:QZone QZone是另外一个采用灰度发布的例子.大家都知道,QZone在过去的一年中改进是巨大的,从以前慢悠悠的老爷爷变成了一个充满青春活力的小伙子.其中 ...
- 在vue项目中使用element-ui的Upload上传组件
<el-upload v-else class='ensure ensureButt' :action="importFileUrl" :data="upLoadD ...
- 把文档中的数据取出并插入到excel中
from xlrd import open_workbookfrom xlutils.copy import copy jsonfile=r'C:\Users\Administrator\Deskto ...
- Nginx URL重写(rewrite)配置及信息详解
URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功 ...
- SSM批量添加数据
如何应对面临批量数据时如何提交给后台 方式1: 使用JSON格式 后台功能接受实现使用@ResponseBody 前端当有多行数据的时候添加到一个数组再通过JSON格式到后台List接收 @Reque ...
- Windows安装多个版本JDK如何切换
本人电脑同时安装了jdk1.7和1.8,以下时切换jdk版本的方式: 1.修改环境变量: 2.修改注册表: 打开HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft 分别修改Jav ...
- DP,数论————洛谷P4317 花神的数论题(求1~n二进制中1的个数和)
玄学代码(是洛谷题解里的一位dalao小粉兔写的) //数位DP(二进制)计算出f[i]为恰好有i个的方案数. //答案为∏(i^f[i]),快速幂解决. #include<bits/stdc+ ...