scrapy爬虫多个条件获取字段

[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 元素。


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 scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor

class 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://www.tuicool.com/articles/quIz2a


参考文档:http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/shell.html#topics-shell

                    http://www.bkjia.com/Androidjc/966774.html#top


保险公司姓名没有爬取到的 原因:









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值