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获取一组汉字拼音首字母的方法
Jul 01 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
详解Python中的type和object
Aug 15 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 Python
python 实时调取摄像头的示例代码
Nov 25 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中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php广告加载类用法实例
2014/09/23 PHP
php如何获取文件的扩展名
2015/10/28 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
javascript打印输出json实例
2013/11/11 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
JavaScript中this详解
2015/09/01 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
vue实现放大镜效果
2020/09/17 Javascript
js实现筛选功能
2020/11/24 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
pandas计数 value_counts()的使用
2019/06/24 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
Python中pass的作用与使用教程
2020/11/13 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
广告业务员岗位职责
2015/02/13 职场文书
看雷锋电影观后感
2015/06/10 职场文书
python_tkinter事件类型详情
2022/03/20 Python