scrapy根据关键字爬取google图片
浏览器的图片都是通过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图片相关推荐
- Python爬虫——关键字爬取百度图片
在日常生活中,我们经常需要使用百度图片来搜索相关的图片资源.而如果需要大量获取特定关键字的图片资源,手动一个个下载无疑十分繁琐且费时费力.因此,本文将介绍如何通过Python爬虫技术,自动化地获取百度 ...
- Python+selenium+Chromedriver+代理爬取Google图片
代码更新,缘由之前是缩略图,一直问怎么爬取原图,索性代码写在下面,莫嫌弃low. 想分享源码的原因就是发现网上有关于Google图片的抓取竟然很少很少有介绍,而且有一个分享的代码竟然还加密收钱mmp, ...
- 知乎搜索关键字爬取相关图片
代码github地址 程序功能:填写搜索关键字,爬虫就会访问知乎搜索页面并处理返回结果,提取标题.url.点赞数.评论数存储到MongoDB数据库中,然后再依次爬取刚才得到的所有url,获取url中所 ...
- python Scrapy Selenium PhantomJS 爬取微博图片
1,创建项目 scrapy startproject weibo #创建工程 scrapy genspider -t basic weibo.com weibo.com #创建spider 目录结构 ...
- Python爬虫爬取Google图片
文章目录 urllib urllib.request.urlretrieve urllib3 in python3 PoolManager Request BeautifulSoup 安装 Insta ...
- 利用python的scrapy框架爬取google搜索结果页面内容
scrapy google search 实验目的 爬虫实习的项目1,利用python的scrapy框架爬取google搜索结果页面内容. https://github.com/1012598167/ ...
- Java爬取 百度图片Google图片Bing图片
先看看抓取的结果. [b]抓关键字"美女"的百度图片:[/b] [img]http://dl2.iteye.com/upload/attachment/0119/1205/e97b ...
- Scrapy爬取美女图片续集 (原创)
上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...
- scrapy爬取昵图网图片
一 : 创建scrapy项目 (1) 使用命令创建项目 : scrapy startproject nipic[项目名可以随意] (2) 使用命令创建一个爬虫文件 : scrapy genspider ...
最新文章
- 大掌柜商业管理系统服务器地址,大掌柜软件通用版操作说明.doc
- python基础知识点整理-Python知识点整理(day1)
- hdu2438 三分
- Core Text 入门
- idea使用git插件,出现冲突了怎么解决?多场景分析助你解决问题
- wxWidgets:容器类
- ie浏览器在线使用_全新的Edge浏览器,快来尝鲜
- [luogu3676]小清新数据结构题
- 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档(上篇)
- 【华为云技术分享】序列特征的处理方法之一:基于注意力机制方法
- restFul风格实现CRUD
- java esc_java – Swing:当按下ESC键时如何关闭对话框?
- JavaScript学习(六十八)—表单校验案例
- Linux文本三剑客超详细教程---grep、sed、awk
- win10网络诊断为DNS服务器未响应,Windows10网络诊断DNS服务器未响应的解决办法
- 打开Charles浏览器无法上网
- php生成appid,uniapp运营中项目转移一定要注意把DCloud appid转移过来
- css timeline,一个非常漂亮的时间轴样式timeLine
- 将苹果手机数据导入苹果手机苹果?如何传输苹果手机数据
- 错误Access-Control-Allow-Origin原因及解决方法