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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
跟老齐学Python之编写类之一创建实例
Oct 11 Python
用Python编写简单的微博爬虫
Mar 04 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
django的ORM模型的实现原理
Mar 04 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python中常用的8种字符串操作方法
May 06 Python
python多进程间通信代码实例
Sep 30 Python
Python改变对象的字符串显示的方法
Aug 01 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 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中长文章分页显示实现代码
2012/09/29 PHP
简单谈谈favicon
2015/06/10 PHP
Prototype Object对象 学习
2009/07/12 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
angular 服务随记小结
2019/05/06 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
化妆师职业生涯规划书
2014/02/16 职场文书
节能环保口号
2014/06/12 职场文书
2015年教师工作总结范文
2015/03/31 职场文书