Python爬虫框架Scrapy基本用法入门教程


Posted in Python onJuly 26, 2018

本文实例讲述了Python爬虫框架Scrapy基本用法。分享给大家供大家参考,具体如下:

Xpath

<html>
<head>
  <title>标题</title>
</head>
<body>
  <h2>二级标题</h2>
  <p>爬虫1</p>
  <p>爬虫2</p>
</body>
</html>

在上述html代码中,我要获取h2的内容,我们可以使用以下代码进行获取:

info = response.xpath("/html/body/h2/text()")

可以看出/html/body/h2为内容的层次结构,text()则是获取h2标签的内容。//p获取所有p标签。获取带具体属性的标签://标签[@属性="属性值"]

<div class="hide"></div>

获取class为hide的div标签

div[@class="hide"]

再比如,我们在谷歌Chrome浏览器上的Console界面使用$x['//h2']命令获取页面中的h2元素信息:

Python爬虫框架Scrapy基本用法入门教程

xmlfeed模板

创建一个xmlfeed模板的爬虫

scrapy genspider -t xmlfeed abc iqianyue.com

核心代码:

from scrapy.spiders import XMLFeedSpider
class AbcSpider(XMLFeedSpider):
  name = 'abc'
  start_urls = ['http://yum.iqianyue.com/weisuenbook/pyspd/part12/test.xml']
  iterator = 'iternodes' # 迭代器,默认为iternodes,是一个基于正则表达式的高性能迭代器。除了iternodes,还有“html”和“xml”
  itertag = 'person' # 设置从哪个节点(标签)开始迭代
  # parse_node会在节点与提供的标签名相符时自动调用
  def parse_node(self, response, selector):
    i = {}
    xpath = "/person/email/text()"
    info = selector.xpath(xpath).extract()
    print(info)
    return i

csvfeed模板

创建一个csvfeed模板的爬虫

scrapy genspider -t csvfeed csvspider iqianyue.com

核心代码

from scrapy.spiders import CSVFeedSpider
class CsvspiderSpider(CSVFeedSpider):
  name = 'csvspider'
  allowed_domains = ['iqianyue.com']
  start_urls = ['http://yum.iqianyue.com/weisuenbook/pyspd/part12/mydata.csv']
  # headers 主要存放csv文件中包含的用于提取字段的信息列表
  headers = ['name', 'sex', 'addr', 'email']
  # delimiter 字段之间的间隔
  delimiter = ','
  def parse_row(self, response, row):
    i = {}
    name = row["name"]
    sex = row["sex"]
    addr = row["addr"]
    email = row["email"]
    print(name,sex,addr,email)
    #i['url'] = row['url']
    #i['name'] = row['name']
    #i['description'] = row['description']
    return i

crawlfeed模板

创建一个crawlfeed模板的爬虫

scrapy genspider -t crawlfeed crawlspider sohu.com

核心代码

class CrawlspiderSpider(CrawlSpider):
  name = 'crawlspider'
  allowed_domains = ['sohu.com']
  start_urls = ['http://sohu.com/']
  rules = (
    Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
  )
  def parse_item(self, response):
    i = {}
    #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
    #i['name'] = response.xpath('//div[@id="name"]').extract()
    #i['description'] = response.xpath('//div[@id="description"]').extract()
    return i

上面代码rules部分中的LinkExtractor为连接提取器。

LinkExtractor中对应的参数及含义

参数名 参数含义
allow 提取符合正则表达式的链接
deny 不提取符合正则表达式的链接
restrict_xpaths 使用XPath表达式与allow共同作用提取同时符合对应XPath表达式和对应正则表达式的链接
allow_domains 允许提取的域名,比如我们想只提取某个域名下的链接时会用到
deny_domains 进制提取的域名

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python self,cls,decorator的理解
Jul 13 Python
Python的ORM框架SQLObject入门实例
Apr 28 Python
python类中super()和__init__()的区别
Oct 18 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
django框架如何集成celery进行开发
May 24 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
Django实现网页分页功能
Oct 31 Python
Keras自定义IOU方式
Jun 10 Python
python中如何写类
Jun 29 Python
Python 在局部变量域中执行代码
Aug 07 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 #Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 #Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
Jul 26 #Python
kaggle+mnist实现手写字体识别
Jul 26 #Python
解决tensorflow模型参数保存和加载的问题
Jul 26 #Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 #Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 #Python
You might like
php表单请求获得数据求和示例
2014/05/15 PHP
Prototype Function对象 学习
2009/07/12 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
vue登录注册实例详解
2019/09/14 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
Python操作CouchDB数据库简单示例
2015/03/10 Python
python实现雨滴下落到地面效果
2018/06/21 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
企业管理部经理岗位职责
2013/12/24 职场文书
领导干部培训感言
2014/01/23 职场文书
中学生期末评语
2014/02/03 职场文书
人力资源总监工作说明
2014/03/03 职场文书
怎样填写就业意向
2014/04/02 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
房屋所有权证明
2015/06/19 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
Java使用Unsafe类的示例详解
2021/09/25 Java/Android