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中文乱码的解决方法
Nov 04 Python
Python线程详解
Jun 24 Python
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
Python模拟登录之滑块验证码的破解(实例代码)
Nov 18 Python
python数值基础知识浅析
Nov 19 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
Python基于百度API识别并提取图片中文字
Jun 27 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP多文件上传类实例
2015/03/07 PHP
简单实现PHP留言板功能
2016/12/21 PHP
newxtree.js代码
2007/03/13 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
javascript document.execCommand() 常用解析
2009/12/14 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
Python yield 小结和实例
2014/04/25 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
Python面向对象实现方法总结
2020/08/12 Python
python实现简单猜单词游戏
2020/12/24 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
电台实习生求职信
2014/02/25 职场文书
应届生求职信范文
2014/05/26 职场文书
小学工作总结2015
2015/05/04 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android