当前位置: 移动技术网 > IT编程>开发语言>.net > scrapy框架下第一只爬虫!

scrapy框架下第一只爬虫!

2020年07月14日  | 移动技术网IT编程  | 我要评论
学习素材整合学习的fishc.com知识,加巩固学习,不作其他目的!新手上路,前辈指教今天学习了scrapy框架编写第一只爬虫,爬取的url:http://www.dmoztools.net/目的:网页截图(‪D:\我的坚果云\01_日常使用文件\1.bmp)希望把标题、超链接、描述都保存到一个文件中正文1、新建一个爬虫打开cmd,scrapy startproject Dmoz2、...

学习素材

整合学习的fishc.com知识,加巩固学习,不作其他目的!新手上路,前辈指教
今天学习了scrapy框架编写第一只爬虫,爬取的url:
这是一个分类导航网站
_________________________________________________________________________________________________分割线网页截图
目的:希望把标题、超链接、描述都保存到一个文件中

正文

1、新建一个爬虫

打开cmd,切换目录到桌面:cd Desktop(默认为你的用户名所在地,C://user,使用cd /d D:// 路径 切换到具体文件夹)
新建爬虫scrapy startproject tutorial
(新建爬虫的另一种方法:)
桌面出现了tutorial的文件夹,里面的文件有截图
spider是从网页爬取数据的类

2、编辑items

items的作用是存储爬取数据的容器,它就是类似于字典,定义一个item的方法很简单,只要继承scrapy.item类,并将所有字段定义为scrapy.Field()即可。

class TutorialItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

3.编写spider

截图
在spiders中新建一个爬虫,命名dmoz_spider.py,代码如下

import scrapy

class DmozSpider(scrapy.Spider):
	name = "dmoz"
	allow_domains = "dmoztools.net"
	start_urls = [
	'http://www.dmoztools.net/Computers/Programming/Languages/Python/Books/',
	'http://www.dmoztools.net/Computers/Programming/Languages/Python/Resources/'
	]
	
	def parse(self,response):
		filename = response.url.split('/')[-2]
		with open(filename,'wb') as f:
			f.write(response.body)
		

为验证爬取过程,先将其打印出来
注意:
(1)每个爬虫的name是惟一的,就是后面cmd中的调用名
(2)domain指的是爬虫的爬取范围
(3)列表中有一个逗号

4、test

进入cmd,进入爬虫文件夹cd tutorial
运行 scrapy crawl dmoz
(dmoz是爬虫的唯一名字!)
屏幕截图
屏幕截图
可以看到,成功爬取到了整个网页内容,接下来要做的就是从中提取出我们需要的title、link和description。我们使用selector来实现
seletor的方法有:
xpath()–传入xpath表达式,返回对应的一个列表
css()–传入css表达式,返回对应的一个列表
extract()–序列化该节点,返回一个列表
re()–传入正则表达式,返回一个列表

5、爬取title示例

对title检查
在这里插入图片描述
可以看到,
title的目录为
sel.xpath(’//div/div/div[@class=“title-and-desc”]/a/div/text()’).extract(),
link的目录为sel.xpaht(’//div/div/div/a/@href’).extract()
desc的目录为sel.xpath(’//div/div/div/div[@class="site-descr "]/text()’).extract()
在cmd中验证:scrapy shell url"http://www.dmoztools.net/Computers/Programming/Languages/Python/Books/"
这时候可以用response了,response.body返回网页代码,response.headers返回网页的headers。
sel.xpath(’//div/div/div/a/div/text()’).extract()
在这里插入图片描述
得到title,测试成功,其他依旧,测试结果中相关的
在这里插入图片描述

6.修改爬虫

import scrapy

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = "dmoztools.net"
    start_urls = [
        'http://www.dmoztools.net/Computers/Programming/Languages/Python/Books/',
        'http://www.dmoztools.net/Computers/Programming/Languages/Python/Resources/'
        ]
    
    def parse(self,response):
        sel = scrapy.selector.Selector(response)
        sites = sel.xpath('//div/div/div[@class="title-and-desc"]')
        for site in sites:
            title = site.xpath('a/div/text()').extract()
            link = site.xpath('a/@href').extract()
            desc = site.xpath('div[@class="site-descr "]/text()').extract()
            print(title,link,desc)

测试打印成功;
屏幕截图屏幕截图

7.存储数据

测试成功后,就要将数据存储到item容器里面 ,

import scrapy


from tutorial.items import TutorialItem #导入item模块

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = "dmoztools.net"
    start_urls = [
        'http://www.dmoztools.net/Computers/Programming/Languages/Python/Books/',
        'http://www.dmoztools.net/Computers/Programming/Languages/Python/Resources/'
        ]
    
    def parse(self,response):
        sel = scrapy.selector.Selector(response)
        sites = sel.xpath('//div/div/div[@class="title-and-desc"]')
        items = []
        for site in sites:
            item = TutorialItem()     #实例出一个对象
            item['title'] = site.xpath('a/div/text()').extract()
            item['link'] = site.xpath('a/@href').extract()
            item['desc'] = site.xpath('div[@class="site-descr "]/text()').extract()
            items.append(item)
        return items

运行scrapy crawl dmoz结果
在这里插入图片描述
接下来要将数据存储为json格式,
scrapy crawl dmoz -o item.json -t json

本文地址:https://blog.csdn.net/qq_43680223/article/details/85958956

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网