scrapy爬虫多个条件获取字段
来源:互联网 发布:投资平台商业模式知乎 编辑:程序博客网 时间:2024/05/16 11:42
[root@bogon Desktop]# scrapy shell 'https://ssl.700du.cn/prod/GAB.html'
>>> sel.xpath('//div[contains(@class,"tb-wrap")]/ul/li[contains(div/text(),"'+u'保险公司'+'")]/div/a/text()|//div[contains(@class,"tb-wrap")]/ul/li[contains(div/text(),"'+u'保险公司'+'")]/div/a/span/text()').extract()
表达式 描述 nodename选取此节点的所有子节点。/从根节点选取。//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。.选取当前节点。..选取当前节点的父节点。@选取属性。 结果 //book/title | //book/price选取 book 元素的所有 title 和 price 元素。//title | //price选取文档中的所有 title 和 price 元素。/bookstore/book/title | //price选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。http://www.tuicool.com/articles/quIz2a
>>> sel.xpath('//div[contains(@class,"tb-wrap")]/ul/li[contains(div/text(),"'+u'保险公司'+'")]/div/a/text()|//div[contains(@class,"tb-wrap")]/ul/li[contains(div/text(),"'+u'保险公司'+'")]/div/a/span/text()').extract()
表达式
scrapy内部支持更简单的查询语法,帮助我们去html中查询我们需要的标签和标签内容以及标签属性。下面逐一进行介绍:
- 查询子子孙孙中的某个标签(以div标签为例)://div
- 查询儿子中的某个标签(以div标签为例):/div
- 查询标签中带有某个class属性的标签://div[@class='c1']即子子孙孙中标签是div且class=‘c1’的标签
- 查询标签中带有某个class=‘c1’并且自定义属性name=‘alex’的标签://div[@class='c1'][@name='alex']
- 查询某个标签的文本内容://div/span/text() 即查询子子孙孙中div下面的span标签中的文本内容
- 查询某个属性的值(例如查询a标签的href属性)://a/@href
CrawlSpider样例
接下来给出配合rule使用CrawlSpider的例子:
import scrapyfrom scrapy.contrib.spiders import CrawlSpider, Rulefrom scrapy.contrib.linkextractors import LinkExtractorclass MySpider(CrawlSpider):name = 'example.com'allowed_domains = ['example.com']start_urls = ['http://www.example.com']rules = (# 提取匹配 'category.php' (但不匹配 'subsection.php') 的链接并跟进链接(没有callback意味着follow默认为True)Rule(LinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),# 提取匹配 'item.php' 的链接并使用spider的parse_item方法进行分析Rule(LinkExtractor(allow=('item\.php', )), callback='parse_item'),)def parse_item(self, response):self.log('Hi, this is an item page! %s' % response.url)item = scrapy.Item()item['id'] = response.xpath('//td[@id="item_id"]/text()').re(r'ID: (\d+)')item['name'] = response.xpath('//td[@id="item_name"]/text()').extract()item['description'] = response.xpath('//td[@id="item_description"]/text()').extract()return item
该spider将从example.com的首页开始爬取,获取category以及item的链接并对后者使用 parse_item方法。 当item获得返回(response)时,将使用XPath处理HTML并生成一些数据填入 Item 中。
参考文档:http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/shell.html#topics-shell
http://www.bkjia.com/Androidjc/966774.html#top
保险公司姓名没有爬取到的 原因:
0 0
- scrapy爬虫多个条件获取字段
- scrapy如何顺序执行多个爬虫
- scrapy顺序执行多个爬虫
- Scrapy爬虫(六):多个爬虫组合实例
- python爬虫框架scrapy一次执行多个爬虫文件
- scrapy的第一个爬虫
- windows中同时运行多个scrapy爬虫
- 利用scrapyd管理scrapy的多个爬虫
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
- python爬虫scrapy之如何同时执行多个scrapy爬行任务
- mysql多个字段排序和多个搜索条件
- 用Swing写个scrapy爬虫图形界面
- 纪念第一个scrapy小爬虫
- scrapy爬虫获取网页特定内容
- Scrapy爬虫 - 获取知乎用户数据
- Scrapy爬虫实战二:获取天气信息
- Scrapy爬虫实战三:获取代理
- 关于C语言中的位运算符
- CUDA Libraries简介
- HttpClient使用Post和Get提交参数
- 普通表转为分区表(一)-在线重定义
- 关于彻底隐藏Android4.0下方的虚拟按键
- scrapy爬虫多个条件获取字段
- Java常用GoF设计模式之一单例模式
- linux中的objdump命令
- [Spring]Bean在IOC容器的生命周期
- Android中Canvas绘图知识的基础学习
- Android Studio---> darwable与mipmap的差别
- c非标准库参考2-进程操作篇
- php读取目录及子目录下所有文件名的方法
- PC-Lint的使用方法