python scrapy框架下的爬虫程序

豹哥用的是python3.6.4,安装scrapy 废了老大事了,pip失败然后逐个安装最好才好的,scrapy框架不会的大家针对自己的版本去查看网上的教程,特别多,而且也很简单易懂,豹哥就不逐个列举了。


在cmd中检查scrapy 安装成功后


在cmd中创建项目

命令如下:

scrapy startproject MyCraw

然后在C盘里边->user->MyCraw->spiders->创建MySpider.py

然后 一顿操作猛如虎,一看战绩0-5,哈哈哈哈。


好了不废话了。

直接代码:

import os
import urllib.request
import scrapy

class MySpider(scrapy.spiders.Spider):
    name='mySpider'
    allowed_domains=['www.sdiders.edu.cn']
    start_urls=['http://www.sdibt.edu.cn/info/1026/11238.htm']
    
    
    def parse(self,response):
        self.downloadWebpage(response)
        self.downloadImages(response )
        
        hxs=scrapy.Selector(response )
        sites =hxs.xpath('//ul/li')
        for site in sites:
            link = site.xpath('a/@href').extra()[0]
            if link =='#':
                continue
            
            #把相对地址转换成绝对地址
            elif link.startswith('..'):
                next_url=os.path.dirname(response.url )
                next_url +='/'+link
            else:
                next_url=link
                
            #生成request对象,并指定回调函数
            yield scrapy.Request(url=next_url,callback=self.parse_item)
            
    #回调函数对起始页面的每个超链接起作用
    def parse_item(self,response):
        self.downloadWebpage(response)
        self.downloadImages(response )
        
    #下载当前页面中所有图片
    def downloadImages(self,response):
        hxs=scrapy.Selector(response)
        images=hxs.xpath('//img@/@scr').extract()
        for image_url in images:
            imageFilename=image_url.split('/')[-1]
            if os.path.exists(imageFilename):
                continue
            #把相对地址转换为绝对地址
            if image_url.startswith('..'):
                image_url=os.path.dirname(response.url)+'/'+image_url
            #打开网页图片
            fp=urllib.request.urlopen(image_url)
            #创建本地图片文件
            with open(imageFilename,'wb')as f:
                f.write(fp.read())
            fp.close()
            
            
    #把网页保存为本地文件
    def downloadWebpage(self,response):
        filename = response.url.split('/')[-1]
        with open(filename,'wb')as f:
            f.write(response.body)    

然后 cmd里  scrapy crawl myspider

就开启爬虫生涯了。


写爬虫不痛苦,痛苦的是出错找不出来,当初我这段代码就是按书上敲得,作者写的很“言简意赅”,然后就苦了我了,把我改的想砸键盘。不说了,都是伤心往事。


大家有什么好的爬虫代码,无论是自己写的还是转载的都可以留言讨论交流。

我依稀记得我大二用爬虫爬百度贴吧的美女图片,那是一个阳光灿烂的午后,那是一个回不去的青春。。。。

哈哈哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值