浏览器的图片都是通过Ajax异步加载的,通过浏览器F12的network下的XHR可以看到,当往下拉动加载更多图片时,XHR会加载出

许多内容,可以判定我们所需的数据可以通过这个接口拿到。下面是代码;

spiders文件

# -*- coding: utf-8 -*-
import scrapy
from urllib.parse import urlencode
import re
from picture.items import PictureItem

class DongzhiwuSpider(scrapy.Spider):
    name = 'dongzhiwu'
    allowed_domains = ['www.google.com']
    start_urls = ['https://www.google.com.hk/']
    phrase_list = ['苹果','香蕉','深圳']#爬取关键字列表

def start_requests(self):
        for name in range(len(self.phrase_list)):
            key = urlencode({'q': self.phrase_list[name]})
            for page in range(1, 21):#爬取20页
                url = "https://www.google.com.hk/search?ei=0n6sW-DlJITr-QbQl7Mw&hl=zh-CN&safe=strict&yv=3&tbm=isch&" + key +"&vet=10ahUKEwjglqSRzdrdAhWEdd4KHdDLDAYQuT0IOCgB.0n6sW-DlJITr-QbQl7Mw.i&ved=0ahUKEwjglqSRzdrdAhWEdd4KHdDLDAYQuT0IOCgB&ijn="+str(page)+"&start="+str(page*100)+"&asearch=ichunk&async=_id:rg_s,_pms:s,_fmt:pc"
                yield scrapy.Request(url, callback=self.parse, meta=({'q': self.phrase_list[name]}), dont_filter=True)

def parse(self, response):
        item = PictureItem()
        item['name'] = response.meta['q']#关键字名
        item['pic_urls'] = re.findall('imgurl=(http.*?)&', response.text)#每一页的图片链接
        yield item

由此我们得到了每一页的图片链接,接下来去管道文件中写道本地即可。

pipelines文件:

from hashlib import md5
from urllib.request import urlretrieve
import os

class PicturePipeline(object):
    def process_item(self, item, spider):
        if not os.path.exists('google图片'):
            os.mkdir('google图片')
        kind_path = '{0}/{1}'.format('google图片', item['name'])
        if not os.path.exists(kind_path):
            os.mkdir(kind_path)
        for url in item['pic_urls']:
            img_path = '{0}/{1}.{2}'.format(kind_path, md5(url.encode("utf-8")).hexdigest(), 'jpg')
            try:
                if not os.path.exists(img_path):
                    urlretrieve(url, filename=img_path)
            except :
                continue
        print(item['name']+"写入完毕")
        return item

以上。

scrapy根据关键字爬取google图片相关推荐

  1. Python爬虫——关键字爬取百度图片

    在日常生活中,我们经常需要使用百度图片来搜索相关的图片资源.而如果需要大量获取特定关键字的图片资源,手动一个个下载无疑十分繁琐且费时费力.因此,本文将介绍如何通过Python爬虫技术,自动化地获取百度 ...

  2. Python+selenium+Chromedriver+代理爬取Google图片

    代码更新,缘由之前是缩略图,一直问怎么爬取原图,索性代码写在下面,莫嫌弃low. 想分享源码的原因就是发现网上有关于Google图片的抓取竟然很少很少有介绍,而且有一个分享的代码竟然还加密收钱mmp, ...

  3. 知乎搜索关键字爬取相关图片

    代码github地址 程序功能:填写搜索关键字,爬虫就会访问知乎搜索页面并处理返回结果,提取标题.url.点赞数.评论数存储到MongoDB数据库中,然后再依次爬取刚才得到的所有url,获取url中所 ...

  4. python Scrapy Selenium PhantomJS 爬取微博图片

    1,创建项目 scrapy startproject weibo #创建工程 scrapy genspider -t basic weibo.com weibo.com #创建spider 目录结构 ...

  5. Python爬虫爬取Google图片

    文章目录 urllib urllib.request.urlretrieve urllib3 in python3 PoolManager Request BeautifulSoup 安装 Insta ...

  6. 利用python的scrapy框架爬取google搜索结果页面内容

    scrapy google search 实验目的 爬虫实习的项目1,利用python的scrapy框架爬取google搜索结果页面内容. https://github.com/1012598167/ ...

  7. Java爬取 百度图片Google图片Bing图片

    先看看抓取的结果. [b]抓关键字"美女"的百度图片:[/b] [img]http://dl2.iteye.com/upload/attachment/0119/1205/e97b ...

  8. Scrapy爬取美女图片续集 (原创)

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...

  9. scrapy爬取昵图网图片

    一 : 创建scrapy项目 (1) 使用命令创建项目 : scrapy startproject nipic[项目名可以随意] (2) 使用命令创建一个爬虫文件 : scrapy genspider ...

最新文章

  1. 大掌柜商业管理系统服务器地址,大掌柜软件通用版操作说明.doc
  2. python基础知识点整理-Python知识点整理(day1)
  3. hdu2438 三分
  4. Core Text 入门
  5. idea使用git插件,出现冲突了怎么解决?多场景分析助你解决问题
  6. wxWidgets:容器类
  7. ie浏览器在线使用_全新的Edge浏览器,快来尝鲜
  8. [luogu3676]小清新数据结构题
  9. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档(上篇)
  10. 【华为云技术分享】序列特征的处理方法之一:基于注意力机制方法
  11. restFul风格实现CRUD
  12. java esc_java – Swing:当按下ESC键时如何关闭对话框?
  13. JavaScript学习(六十八)—表单校验案例
  14. Linux文本三剑客超详细教程---grep、sed、awk
  15. win10网络诊断为DNS服务器未响应,Windows10网络诊断DNS服务器未响应的解决办法
  16. 打开Charles浏览器无法上网
  17. php生成appid,uniapp运营中项目转移一定要注意把DCloud appid转移过来
  18. css timeline,一个非常漂亮的时间轴样式timeLine
  19. 将苹果手机数据导入苹果手机苹果?如何传输苹果手机数据
  20. 错误Access-Control-Allow-Origin原因及解决方法

热门文章

  1. 智者千虑必有一失,愚者千虑必有一得!
  2. 谷歌HDR+研读(二)
  3. 如何才能进阶高级Java程序员?
  4. java计算机毕业设计vue学习视频课程网站源码+数据库+系统+lw文档
  5. SharePreferences简单使用
  6. 时间不语,岁月要歌-我的2021
  7. Python numpy中random函数的使用
  8. 欢聚时代c++开发岗位面试经验
  9. 初学者笔记(一):利用python求100的因数
  10. Birdwatching