欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Scrapy-css选择器

发布时间:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Scrapy-css选择器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

和xpath选择器比起来,感觉CSS选择器容易一些,跟写.css时方法基本一样,就是在获取内容时和xpath不同,这里需要注意一下.

这里介绍如何用css选择器提取出一篇文章的数据
提取的数据跟xpath那篇文章内容相同
之前xpath中我们获取元素是通过.entry-header h1::text,如果是属性则用.entry-header a::attr(href)
介绍一个常用的函数extract_first()
相当于extract()[0],但是extract()[0]当数组没有元素时,也就是没有获取到数据时会出错,所以用extract_first()方法,也可以加上需要返回的内容,比如空,extract_first("")

title = response.css(".entry-header h1::text").extract_first() #p可以不加 create_date = response.css("p.entry-meta-hide-on-mobile::text").extract()[0].strip().replace('·','').strip() #获取点赞数 praise_nums = response.css('#110287votetotal::text').extract()[0] #获取收藏数 fav_nums = response.css('.btn-bluet-bigger.href-style.bookmark-btn .register-user-only::text ').extract()[0].strip() match_re = re.match('.*?(\d+).*',fav_nums) if match_re:#获取收藏数fav_nums = match_re.group(1) comment_nums = response.css('.btn-bluet-bigger.href-style.hide-on-480::text').extract()[0].strip() match_re = re.match('.*?(\d+).*',fav_nums) if match_re:comment_nums = match_re.group(1) tag_list = response.css('.entry-meta-hide-on-mobile a::text').extract() content = response.css('div.entry').extract()[0] tag_list = [element for element in tag_list if not element.strip().endswith('评论')] tag = ','.join(tag_list)

当我们要选择的属性名字有多个时比如下面:


这市在选择时应该用

post_urls = response.css('#archive .post.floated-thumb .post-thumb a::attr(href)').extract()

也就是.post.floated-thumb应该连起来,或者只写.floated-thumb
##完整代码(准)

def parse_detail(self, response):title = response.css(".entry-header h1::text").extract_first()create_date = response.css("p.entry-meta-hide-on-mobile::text").extract()[0].strip().replace("·","").strip()praise_nums = response.css(".vote-post-up h10::text").extract()[0]fav_nums = response.css(".bookmark-btn::text").extract()[0]match_re = re.match(".*?(\d+).*", fav_nums)if match_re:fav_nums = int(match_re.group(1))else:fav_nums = 0comment_nums = response.css("a[href='#article-comment'] span::text").extract()[0]match_re = re.match(".*?(\d+).*", comment_nums)if match_re:comment_nums = int(match_re.group(1))else:comment_nums = 0content = response.css("div.entry").extract()[0]tag_list = response.css("p.entry-meta-hide-on-mobile a::text").extract()tag_list = [element for element in tag_list if not element.strip().endswith("评论")]tags = ",".join(tag_list)pass

总结

以上是生活随笔为你收集整理的Scrapy-css选择器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。