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模块学习 filecmp 文件比较
Aug 27 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
Python 类的特殊成员解析
Jun 20 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
Django stark组件使用及原理详解
Aug 22 Python
Python如何使用turtle库绘制图形
Feb 26 Python
python实现电子词典
Mar 03 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
python list的index()和find()的实现
Nov 16 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
解析js如何获取css样式
2016/12/11 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
浅谈PyTorch中in-place operation的含义
2020/06/27 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
国际商务专业学生个人的自我评价
2013/09/28 职场文书
应届毕业生个人自荐信范文
2013/11/30 职场文书
旷课检讨书2000字
2014/01/14 职场文书
顶撞老师检讨书
2014/02/07 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
获奖感言范文
2015/07/31 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Python创建SQL数据库流程逐步讲解
2022/09/23 Python