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求众数问题实例
Sep 26 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
python 二分查找和快速排序实例详解
Oct 13 Python
python版简单工厂模式
Oct 16 Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 Python
python中必要的名词解释
Nov 20 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
python线程信号量semaphore使用解析
Nov 30 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
用Python生成HTML表格的方法示例
Mar 06 Python
Python利用folium实现地图可视化
May 23 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
基于mysql的论坛(6)
2006/10/09 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
子页向父页传值示例
2013/11/27 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python入门篇之文件
2014/10/20 Python
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python Cookie 读取和保存方法
2018/12/28 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
python dumps和loads区别详解
2020/02/04 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
携程英文网站:Trip.com
2017/02/07 全球购物
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
体育专业个人求职信范文
2013/12/27 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
诚实守信演讲稿
2014/09/01 职场文书
公司的力量观后感
2015/06/05 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书