使用scrapy抓取百度的图片

1.scrapy的安装

pip install Scrapy

2.建立scrapy项目

scrapy startproject L10

(这里有一个问题,出现了两个L10目录)

修改根目录下的items.py文件

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 json

class 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 item
            except 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文件夹,里边存放着图片

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这里是一个简单的Python-Scrapy爬取百度搜索结果并对搜索结果进行分析的例子: 首先,我们需要安装Scrapy和lxml库。在命令行中输入以下命令: ``` pip install scrapy pip install lxml ``` 然后,我们可以创建一个名为baidu_spider的新项目,并在项目中创建一个名为baidu的新爬虫。在命令行中输入以下命令: ``` scrapy startproject baidu_spider cd baidu_spider scrapy genspider baidu www.baidu.com ``` 现在,我们在baidu_spider/spiders/baidu.py文件中编写我们的代码。我们将使用Scrapy的Selector来选择我们想要的数据。代码如下: ```python import scrapy class BaiduSpider(scrapy.Spider): name = "baidu" allowed_domains = ["www.baidu.com"] start_urls = ["http://www.baidu.com/s?wd=python"] def parse(self, response): # 获取搜索结果 results = response.xpath('//div[@class="result c-container "]') for result in results: # 获取标题和链接 title = result.xpath('.//h3/a/text()').extract_first().strip() link = result.xpath('.//h3/a/@href').extract_first() # 获取摘要 abstract = result.xpath('.//div[@class="c-abstract"]//text()').extract() abstract = "".join(abstract).strip() # 打印结果 print(title) print(link) print(abstract) ``` 在这个例子中,我们首先定义了我们的爬虫的名称,允许的域名和起始URL。然后我们定义了一个parse函数来处理响应。在parse函数中,我们使用XPath选择器来选择搜索结果。我们使用extract_first()和extract()方法来提取标题、链接和摘要。最后,我们打印了结果。 现在,我们可以在baidu_spider目录中运行以下命令来运行我们的爬虫: ``` scrapy crawl baidu ``` 这将启动我们的爬虫并开始爬取百度搜索结果。在控制台中,您应该能够看到我们的爬虫正在输出搜索结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值