使用scrapy抓取百度的图片
1.scrapy的安装
import scrapy
from scrapy import Field,Item#Item 是用来保存爬取到的数据的容器
class BaiduItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()# image_type = Field() #图片image_url = Field()pass
在spiders文件夹里创建sexyGirl.py文件并编写该文件
加入以下文件
# -*- coding:utf-8 -*-
from scrapy.spiders import CrawlSpider
from scrapy.http import Request
from scrapy.selector import Selector
from baidu.items import BaiduItem
import jsonclass sexyGirl(CrawlSpider):name = 'sexyGirl'# 设置headers伪装成浏览器headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'}# 指定url的情况下我们重写start_requests方法def start_requests(self):start_urls = 'https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord+=性感美女&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&word=性感美女%E9%99%86%E6%AF%85&z=&ic=0&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&step_word=%E9%99%86%E6%AF%85&pn=0&rn=30&gsm=1e&1528441524820='yield Request(start_urls,headers=self.headers)def parse(self, response):#从Json文件内容中提取所有img的内容imgs = json.loads(response.body)['data']for eachImage in imgs:item = BaiduItem() #items中的类try:item['image_url'] = [eachImage['middleURL']]yield itemexcept Exception as e:print(e)
编写settings.py文件
#True 改 False
ROBOTSTXT_OBEY = False
运行网络爬虫
scrapycrawl sexyGirl -o result.csv
报错
No module named 'win32api'
运行 pip install pypiwin32,后安装,再次运行
项目中得到一个result.csv文件,一个scrapy.log文件,以及一个full文件夹,里边存放着图片
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
