在上一篇文章的末尾,我们创建了一个scrapy框架的爬虫项目test,现在来运行下一个简单的爬虫,看看scrapy爬取的过程是怎样的。

一、爬虫类编写(spider.py)

from scrapy.spider import BaseSpider

class test(BaseSpider):
name = "test"
allowed_domains = ["yuedu.baidu.com"]
start_urls = ["http://yuedu.baidu.com/book/list/0?od=0&show=1&pn=0"] def parse(self, response):
print response.url

二、爬网页:运行scrapy项目

这里选择从命令行启动运行项目的方式,一定要注意工程目录结构,能够运行scrapy命令的只有scrapy安装的根目录下。

cd到scrapy的根目录,我的是D:\Python27\,然后运行scrapy命令:scrapy runspider test\test\spiders\spider.py。(或者直接运行工程项目的命令scrapy crawl test),可以看到爬虫爬取的过程有一些debug信息输出:

scrapy给爬虫的start_urls属性中的每个url创建了一个scrapy.http.Request对象,指定parse()方法为回调函数。当这些Request被调度并执行,之后通过parse()返回scrapy.http.Response对象,返回给爬虫。

三、取网页:网页解析

这里用shell爬取网页,cd到项目的根目录test\下,在cmd中输入:

scrapy shell http://yuedu.baidu.com

可以看到结果如下图:

刚才的整个过程中,shell载入url后获得了响应,由本地变量response存储响应结果。

来看下response的内容,输入response.body可以查看response的body部分,即抓到的网页内容:

要查看head部分,输入response.headers:

四、用选择器xpath提取网页

之前提取网页是用的正则,这里选择器xpath提供了更好的接口。shell有一个selector对象sel,可以根据返回的数据类型自动选择最佳的解析方式(XML or HTML),无需再指明了。

1.抓取网页标题,即<titie>标签,在命令行里输入:response.selector.xpath(‘//title’)

或者:response.xpath(‘//title’)

2.抓取<title>下的<text>内容,命令sel.xpath(‘//title/text()’).extract()

先写到这里,下篇文章给出一个关于scrapy项目的完整实例。

原创文章,转载请注明出处:http://blog.csdn.net/dianacody/article/details/39753933

【网络爬虫】【python】网络爬虫(五):scrapy爬虫初探——爬取网页及选择器的更多相关文章

  1. Python使用urllib,urllib3,requests库+beautifulsoup爬取网页

    Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...

  2. python网络爬虫之scrapy 调试以及爬取网页

    Shell调试: 进入项目所在目录,scrapy shell “网址” 如下例中的: scrapy shell http://www.w3school.com.cn/xml/xml_syntax.as ...

  3. 接着上次的python爬虫,今天进阶一哈,局部解析爬取网页数据

    *解析网页数据的仓库 用Beatifulsoup基于lxml包lxml包基于html和xml的标记语言的解析包.可以去解析网页的内容,把我们想要的提取出来. 第一步.导入两个包,项目中必须包含beau ...

  4. Pyhton网络爬虫实例_豆瓣电影排行榜_BeautifulSoup4方法爬取

    -----------------------------------------------------------学无止境------------------------------------- ...

  5. scrapy爬虫学习系列一:scrapy爬虫环境的准备

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  6. 爬虫系列5:scrapy动态页面爬取的另一种思路

    前面有篇文章给出了爬取动态页面的一种思路,即应用Selenium+Firefox(参考<scrapy动态页面爬取>).但是selenium需要运行本地浏览器,比较耗时,不太适合大规模网页抓 ...

  7. python3爬虫爬取网页思路及常见问题(原创)

    学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...

  8. 一起学爬虫——使用Beautiful Soup爬取网页

    要想学好爬虫,必须把基础打扎实,之前发布了两篇文章,分别是使用XPATH和requests爬取网页,今天的文章是学习Beautiful Soup并通过一个例子来实现如何使用Beautiful Soup ...

  9. java爬虫-简单爬取网页图片

    刚刚接触到“爬虫”这个词的时候是在大一,那时候什么都不明白,但知道了百度.谷歌他们的搜索引擎就是个爬虫. 现在大二.再次燃起对爬虫的热爱,查阅资料,知道常用java.python语言编程,这次我选择了 ...

随机推荐

  1. l两张图片轮播

    在head里面加 <script language="javascript"> function scroll(spanlevel) { if (spanlevel.s ...

  2. php部分--题目:投票 重点:两个div套用,显示百分比;

    1.建立两个表格:要显示百分比的话,就要在选项表中加上一列标记number 2.链接数据库,并对题目和选项进行显示 <?php $db=new MySQLi("localhost&qu ...

  3. sql查询的日期判断问题

    在SQLSERVE中,如果某个数据表的类型被定义成datetime类型,那么数据是包含秒的.这时候如何查询某天的数据呢?新手们可能想:最直接的做法是把时间部分去掉,只取日期部分.于是日期的函数就用上了 ...

  4. testng testcase失败重试

    简单介绍 需求场景:测试移动端应用,常会因为点击失效.网络延迟大等原因导致测试脚本失败.这时,需要自动重新运行失败的脚本,直到脚本成功通过或者到达限定重试次数. 解决方案:实现testng的IRetr ...

  5. [2018-11-27]2018年12月1日宁波dotnet社区线下活动

    离上次活动,转眼又过了一个月,幸得各路大神支持,于本周六(12月1日),宁波dotnet社区的线下分享活动又来啦! 活动嘉宾及主题 董斌辉 2015-2019年微软全球最有价值专家(.NET方向) 2 ...

  6. 顽石系列:Java技术面试

    顽石系列:Java技术面试 JDBC相关 1.Statement与PreparedStatement的区 别,什什么是SQL注⼊入,如何防⽌止SQL注⼊? PreparedStatement支持动态设 ...

  7. BZOJ 3362 Navigation Nightmare

    一道带权并查集题目. 带权并查集的重点是信息的合并. 这类题出现得并不多,练习一下. #include<bits/stdc++.h> using namespace std; #defin ...

  8. SDOI 2017 Day1

    日期:2017-04-10 题解: 第一题: 题目大意:求fi(gcd(i,j))的乘积  i,j属于[1,1e6],数据组数1000组. 类别:套路题. 第二题:BZOJ原题. 题解:LCT套线段树 ...

  9. Spring Boot2.0之整合log4j

    传统方式打印日志比较复杂, 每次打印需要定义全局变量 private static final Logger logger = LoggerFactory.getLogger(SjpControlle ...

  10. 51nod 1189

    题目 神犇题解 表示自己数论渣成狗...膜拜神犇. n!*(x+y)=x*y n!^2=(x-n!)*(y-n!) 那么求出n!^2的因数个数就可以了.