python css和xpath_xpath选择器与css选择器

xpath 语法

表达式

说明

article

选取所有article元素的所有子节点

/article

选取根元素article

articel/a

选取所有属于article的子元素的a元素

//div

选取所有div子元素(不论出现在文档任何地方)

article//div

选取所有属于article元素的后代的div元素,不管它出现在article之下的任何位置

//@class

选取所有名为class的属性

/article/div[1]

选取属于article子元素的第一个div元素

/article/div[last()]

选取属于article子元素的最后一个div元素

/article/div[last()-1]

选取属于article子元素的倒数第二个div元素

//div[@lang]

选取所有拥有lang属性的div元素

//div[@lang=’eng’]

选取所有lang属性为eng的div元素

/div/*

选取属于div元素的所有子节点

//*

选取所有元素

//div[@*]

选取所有带属性的div元素

/div/a竖线//div/p

选取所有div元素的a和p元素

//span竖线//ul

选取文档中的span和ul元素

article/div/p竖线//span

选取所有属于article元素的div元素的p元素以及文档中的所有span元素

xpath实例

#//*[@id="post-113493"]/div[1]/h1

#xpath 返回一个selector,再通过extract()方法,可以得到str的数组------------------

re_selector=response.xpath("//div[@class='entry-header']/h1/text()")

title=re_selector.extract()[0]

create_date = response.xpath("//p[@class='entry-meta-hide-on-mobile']/text()").extract_first().strip().replace('·','').strip()

#可以获取a标签的href属性值----------------------------

id = i.xpath("h2/a/@href")[0]

#获取点赞数

praise_number=int(response.xpath("//span[contains(@class,'vote-post-up')]/h10/text()").extract_first())

#获取收藏数

fav_nums=response.xpath("//span[contains(@class,'bookmark-btn')]/text()").extract_first()

match_re = re.match(r'.*(\d+).*', fav_nums)

if match_re:

fav_nums=match_re.group(1)

#获取评论数

comment_nums = response.xpath("//a[@href='#article-comment']/span/text()").extract()[0]

match_re = re.match(r'.*?(\d+).*', comment_nums)

if match_re:

comment_nums = match_re.group(1)

#内容

content=response.xpath("//div[@class='entry']").extract()[0]

tags = response.xpath("//p[@class='entry-meta-hide-on-mobile']/a/text()").extract()

tag_list=[element for element in tags if not element.strip().endswith('评论')]

tag_list=",".join(tag_list)

CSS选择器

表达式

说明

*

选择所有节点

#container

选取ID为container的节点

.container

选取所有class包含container的节点

li a

选取所有li下的所有a节点

ul+p

选取ul后面的第一个p元素

div#container >ul

选取id为container的div的第一个ul子元素

ul ~p

选取与ul相邻的所有p元素

a[title]

选取所有有title的a元素

选取所有href属性为jobbole.com值得a元素

a[href*=”mvsay”]

选取所有href属性包含mvsay的a元素

a[href^=”http”]

选取所有href属性值以http开头的a元素

a[href$=”.jpg”]

选取所有href属性值以.jpg结尾的a元素

input[type=radio]:checked

选取选中的radio元素

div:not(#container)

选取所有id非container的div元素

li:nth-child(3)

选取第三个li元素

tr:nth-child(2n)

选取第偶数个tr

选择内容的方式

#CSS选择器,输出a标签内的属性href值

post_url=response.css("div.floated-thumb div.post-thumb a::attr(href)").extract()

#通过CSS选择器提取字段=============================

title_css = response.css(".entry-header h1::text").extract_first()

create_date_css = response.css("p.entry-meta-hide-on-mobile ::text").extract()[0].strip().replace('·','').strip()

# 获取点赞数

praise_number_css = int(response.css(".vote-post-up h10::text").extract()[0])

# 获取收藏数

fav_nums_css = response.css(".bookmark-btn::text").extract()[0]

match_re = re.match(r'.*(\d+).*', fav_nums_css)

if match_re:

fav_nums_css = match_re.group(1)

# 获取评论数

comment_nums_css = response.css("a[href='#article-comment'] span::text").extract_first()

match_re = re.match(r'.*?(\d+).*', comment_nums_css)

if match_re:

comment_nums_css = match_re.group(1)

# 内容

content_css = response.css("div.entry").extract()[0]

tags_css = response.css("p.entry-meta-hide-on-mobile a::text").extract()

tag_list = [element for element in tags_css if not element.strip().endswith('评论')]

tag_list = ",".join(tag_list)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值