scrapy 的 selector 练习

简介: 网页结构: Example website Name: My image 1 Name: My image 2 Name: My image 3 Name: My image 4 Name: My image 5 连接:scrapy shell http://doc.

网页结构

<html>
 <head>
  <base href='http://example.com/' />
  <title>Example website</title>
 </head>
 <body>
  <div id='images'>
   <a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a>
   <a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a>
   <a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a>
   <a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a>
   <a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a>
  </div>
 </body>
</html>

连接:

scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html

Play:
注意xapthcss两种方式的区别与联系

# selector
response.selector.xpath('//title/text()').extract()
response.selector.css('title::text').extract()


# response的selector的xpath与css太常用了,所以提供了简捷写法:

# 文本一
response.xpath('//title/text()').extract()
response.css('title::text').extract()

# 文本 包括子节点
sel.xpath("//a[1]//text()").extract()

# 文本 包括子节点
sel.xpath("string(//a[1])").extract()


# 属性
response.xpath('//img/@src').extract()
response.css('img::attr(src)').extract()

# 混合
response.css('img').xpath('@src').extract()
response.xpath('//img').css('::attr(src)').extract()

# 精确
response.xpath('//div[@id="images"]/a/text()').extract()
response.css('div[id=images] a::text').extract()

# 模糊
response.xpath('//div[contains(@id, "image")]/a/text()').extract()
response.css('div[id*=image] a::text').extract()

# 正则
response.xpath('//a[contains(@href, "image")]/text()').re(r'Name:\s*(.*)')
目录
相关文章
|
5月前
|
存储 Python
05 Tornado - options
05 Tornado - options
24 0
|
5月前
|
Web App开发 缓存 JavaScript
11 Tornado - 使用模板
11 Tornado - 使用模板
24 0
|
8月前
|
中间件 调度 Python
Python Scrapy框架之 Downloader Middleware的使用
Python Scrapy框架之 Downloader Middleware的使用
|
9月前
|
Python
【Flask】flask-bootstrap报错AttributeError: module ‘dominate.tags‘ has no attribute ‘input‘解决方法
【Flask】flask-bootstrap报错AttributeError: module ‘dominate.tags‘ has no attribute ‘input‘解决方法
如何使用flask的 @app.url_value_preprocessor 装饰器
如何使用flask的 @app.url_value_preprocessor 装饰器
如何使用flask的 @app.context_processor 装饰器
如何使用flask的 @app.context_processor 装饰器
|
前端开发 JavaScript Python
Flask:使用SocketIO实现WebSocket与前端Vue进行实时推送(gevent-websocket、flask-socketio、flask不出现running on 127..问题)
本文旨在记录使用Flask框架过程中与前端Vue对接过程中,存在WebSocket总是连接失败导致前端取不到数据的问题。以及在使用WebSocket相关功能的库包gevent-websocket之后,导致运行Flask项目之后,控制台没有显示running on 127.0.0.1:5000 问题、以及没有输出log日志记录的问题、以及总是报错Websocket connection to‘ws://127.0.0.1:5000/socket.io/?EIO=4&transport=websocket’failed:Error during Websocket handshake:Unexpe
Flask:使用SocketIO实现WebSocket与前端Vue进行实时推送(gevent-websocket、flask-socketio、flask不出现running on 127..问题)
|
数据采集 中间件 Python
Python爬虫:Scrapy中间件Middleware和Pipeline
Python爬虫:Scrapy中间件Middleware和Pipeline
201 1
Python爬虫:Scrapy中间件Middleware和Pipeline
|
JSON 前端开发 JavaScript
Flask使用bootstrap为HttpServer添加上传文件功能
今天朋友说,之前写的文章Flask开发vip版HttpServer,具备了httpserver的下载功能,比python原生的http服务好用多了,但能否再此基础上添加一个文件上传的功能呢?必须可以啊,正好复习下bootstrap和jQuery的相关知识。
146 0
|
数据采集 前端开发 数据库
Scrapy框架| Scrapy中spiders的那些事......
Scrapy框架| Scrapy中spiders的那些事......
89 0

热门文章

最新文章