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程序中自定义异常的方法
Oct 16 Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
python多任务及返回值的处理方法
Jan 22 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
Mar 18 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
Jupyter notebook如何修改平台字体
May 13 Python
Python selenium爬取微博数据代码实例
May 22 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判断当前操作系统类型
2015/10/28 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
splice slice区别
2006/10/09 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
vuex存储token示例
2019/11/11 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python如何安装下载后的模块
2020/07/03 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
门卫工作岗位职责
2013/12/17 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
《风筝》教学反思
2014/04/10 职场文书
校园文明倡议书
2014/05/16 职场文书
社区禁毒工作方案
2014/06/02 职场文书
银行奉献演讲稿
2014/09/16 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers