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实现新浪博客备份的方法
Apr 27 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
详解Python中的各种转义符\n\r\t
Jul 10 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
Python中实现输入一个整数的案例
May 03 Python
详解python tkinter 图片插入问题
Sep 03 Python
Python基础之字符串格式化详解
Apr 21 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 split汉字
2009/06/05 PHP
php过滤敏感词的示例
2014/03/31 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
mpvue跳转页面及注意事项
2018/08/03 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
python实现月食效果实例代码
2019/06/18 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
小学班主任寄语大全
2014/04/04 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
交流会主持词
2015/07/02 职场文书
清明扫墓感想
2015/08/11 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
mysql 索引合并的使用
2021/08/30 MySQL
基于Redis的List实现特价商品列表功能
2021/08/30 Redis