这里我用的python工具是anaconda。

1.首先创建一个scrapy工程:

打开anaconda promt命令行(注意这里不是使用cmd打开windows下的命令行),进入到需要创建工程的目录下,执行“scrapy startproject dmoz“”创建工程

注意这里进入创建工程的目录时,不可直接"cd d:\python\workspace",需要将原来的目录返回到根目录下,才可以切换磁盘。

创建完工程后,进入到工程目录下,可以看到如下目录结构:

进入到tuturial目录:

2.在items.py文件中定义需要用到的变量

import scrapyclass DmozItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title=scrapy.Field()link=scrapy.Field()
#    desc=scrapy.Filed()

3.进入到spider文件夹下,创建用于爬取数据的文件dmoz_spider.py

首先要确定爬取网站的地址,这里我们爬取dmoz网站中的新闻媒体及字典的目录网页:

http://dmoztools.net/Computers/Software/Shareware/News_and_Media/
http://dmoztools.net/Computers/Software/Shareware/Directories/

需要限定爬虫的爬取范围,否则爬取工作结束后,它可能会爬取未知网址的信息,限定爬虫范围的代码为:

allowed_domains=['dmoztools.net']

以“”http://dmoztools.net/Computers/Software/Shareware/Directories/为例展示网页中的信息”:

在这里会显示对应分类的诸多网址信息,我们需要爬取的就是红色框标出来的网址名称以及对应的链接。

需要查看红色框对应代码中的位置:

可以看到链接对应的页面源码的位置为:div标签下的a标签。但是有很多div标签,又如何定位到a标签所在的div标签呢?通过标签对应的css样式来定位。

这里使用了xpath函数来爬取到指定标签的数据。

sites=sel.xpath('//div[@class="title-and-desc"]')

[@class="title-and-desc"]用于指定对应的div样式。

import scrapyfrom tuturial.items import DmozItemclass DmozSpider(scrapy.Spider):name="dmoz"allowed_domains=['dmoztools.net']#爬取范围,防止爬虫在爬取完指定网页之后去爬取未知的网页#爬取的初始地址start_urls=['http://dmoztools.net/Computers/Software/Shareware/News_and_Media/','http://dmoztools.net/Computers/Software/Shareware/Directories/']#当根据爬取地址下载完内容后,会返回一个response,调用parse函数def parse(self,response):
#        filename=response.url.split('/')[-2]
#        with open(filename,'wb') as f:
#            f.write(response.body)sel=scrapy.selector.Selector(response)#查看网页中的审查元素,确定需要爬取的数据在网页中的位置,根据所在的标签进行爬取#在我们需要爬取的这两个网页中,列出的目录网址都在div标签中,但是网页中有很多div标签,需要根据div标签的css#样式进行进一步确定,使用[@class=""]来指定对应的css样式sites=sel.xpath('//div[@class="title-and-desc"]')items=[]#对div中的每一条记录进行处理for site in sites:#实例化items.py指定的类,用于存储爬取到的数据item=DmozItem()#刚刚查询到的div下的a标签下的div标签下存储着对应的链接的名称item['title']=site.xpath('a/div/text()').extract()#刚刚查询到的div下的a标签下的href属性下存储着对应的链接item['link']=site.xpath('a/@href').extract()
#            desc=site.xpath('text()').extract()#将爬取出来的数据存储到items中
            items.append(item)
#            print(title,link)return items

注意需要引入到items文件:

from tuturial.items import DmozItem

该文件的name指定爬虫的名称,所以该名称必须是唯一的,这样才可以根据爬虫的名称找到对应的执行代码。

在anaconda prompt进入到爬虫工程下执行爬虫文件,并将爬取到的数据存储到json文件中

-o指定存储的文件,-t指定存储的格式。

在工程目录下就可以看到item.json文件了。

items.json文件的内容为:

对应的链接名称和网址就存储到文件中了。

转载于:https://www.cnblogs.com/wyhluckdog/p/10949613.html

在anaconda下创建我的第一个scrapy爬虫——爬取dmoz网站某一网址下的目录的链接名称以及链接地址...相关推荐

  1. java用爬虫爬一个页面_使用Java写一个简单爬虫爬取单页面

    使用Java爬虫爬取人民日报公众号页面图片 使用Java框架Jsoup和HttpClient实现,先看代码 爬取目标页面 1.使用Maven构建一个普通Java工程 加入依赖: org.jsoup j ...

  2. 用Python写一个网络爬虫爬取网页中的图片

    写一个爬虫爬取百度贴吧中一个帖子图片 网址:壁纸 用谷歌浏览器的开发工具检查网页,可以发现其每一张图片都有如下格式 <img class="BDE_Image" src=&q ...

  3. python爬虫下载电影百度文档_写一个python 爬虫爬取百度电影并存入mysql中

    目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...

  4. 我的第一个Scrapy 程序 - 爬取当当网信息

    前面已经安装了Scrapy,下面来实现第一个测试程序. 概述 Scrapy是一个爬虫框架,他的基本流程如下所示(下面截图来自互联网) 简单的说,我们需要写一个item文件,定义返回的数据结构:写一个s ...

  5. Python爬虫-爬取手机应用市场中APP下载量

    一.首先是爬取360手机助手应用市场信息,用来爬取360应用市场,App软件信息,现阶段代码只能爬取下载量,如需爬取别的信息,请自行添加代码. 使用方法: 1.在D盘根目录新建.tet文件,命名为Ap ...

  6. python爬虫实战之图灵社区图书信息的爬取(找了久,才找到一个比较好爬取的网站)

    python爬虫实战之图灵社区图书信息的爬取 程序的描述 目标 获取图灵社区(https://www.ituring.com.cn/book)中40本图书的书名 将获取的信息以列表的形式输出到屏幕上, ...

  7. python学习(三)scrapy爬虫框架(二)——创建一个scrapy爬虫

    在创建新的scrapy爬虫之前,我们需要先了解一下创建一个scrapy爬虫的基本步骤 第一步:确定要爬取的数据 以爬取豆瓣电影数据为例: 每部电影所要爬取的信息有: 片名:<头号玩家> 导 ...

  8. 利用python爬取知乎评论_一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: 1 # -*- c ...

  9. 【python实现网络爬虫(5)】第一个Scrapy爬虫实例项目(Scrapy原理及Scrapy爬取名言名句网站信息)

    Scrapy介绍 总共有五部分组成的:具体的流程可看图示 引擎.调度器.下载器.蜘蛛和项目管道 爬取流程 针对于每个URL, Scheduler -> Downloader -> Spid ...

最新文章

  1. Scala swing和FX
  2. 计算机网络的寻址问题ARP协议(Mac地址 ip地址)
  3. python长度为n的list_python “list*n”的坑你得注意
  4. linux内核研究(一)
  5. Linux 内核总线
  6. 从微信的改版中我看到了微信的焦虑
  7. C++ lower_bound 与 upper_bound 函数
  8. 10g 回收站(RECYCLE BIN)导致查询表空间的利用率时很慢
  9. Http 请求处理流程[转]
  10. SVN安装及使用+SVN汉化
  11. Python中利用scipy库进行最小二乘回归分析(金融相关)
  12. 【磁盘】 文件外存分配方式
  13. 使用vba宏/python代码更新word目录——只更新页码
  14. 使用Photon PUN创建简单对战游戏
  15. python如何打印26个字母_python3打印26个英文字母
  16. 电子签名第三方服务平台,如何保障电子合同安全性的?
  17. USPS数据集处理及下载方法
  18. 搜索技术-全文检索概述
  19. 声学——声源定位阅读笔记
  20. 纠删码在实时视频流中的应用丨Dev for Dev 专栏

热门文章

  1. Linux 中设置环境变量的三种方法
  2. shell连接mysql
  3. Windows环境下配置thrift编译器(VS2015)
  4. 编译安装时的--prefix参数的使用方法,很实用,mark一下
  5. Ubuntu文本编辑器适合linux平台的其它版本
  6. MFC 程序来龙去脉
  7. UVA 10004 Bicoloring
  8. 在GridView里使用CheckBox
  9. 如何安全地迁移到Exchange 2003?
  10. document.cookie 获取不到_意想不到,王者荣耀中不用花钱就可以获得的皮肤有哪