爬虫Scrapy框架之css选择器如何使用

这篇文章将为大家详细讲解有关爬虫Scrapy框架之css选择器如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联是一家集网站建设,王屋企业网站建设,王屋品牌网站建设,网站定制,王屋网站建设报价,网络营销,网络优化,王屋网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

css选择器介绍

  • 在css中选择器是一种模式,用于选择需要添加样式的元素,css对html页面中的元素实现一对一,一对多或者多对一的控制,都需要用到css选择器,html页面中的元素就是通过css选择器进行控制的;

css选择器的基本语法

  • 类选择器:元素的class属性,比如class="box"表示选取class为box的元素;

  • ID选择器:元素的id属性,比如id="box"表示选取id为box的元素;

  • 元素选择器:直接选择文档元素,比如p表示选择所有的p元素,div表示选择所有的div元素;

  • 属性选择器:选择具有某个属性的元素,如*[title]表示选择所有包含title属性的元素、a[href]表示选择所有带有href属性的a元素等;

  • 后代选择器:选择包含元素后代的元素,如li a表示选取所有li 下所有a元素;

  • 子元素选择器:选择作为某元素子元素的元素,如h2 > strong表示选择父元素为h2 的所有 strong 元素;

  • 相邻兄弟选择器:选择紧接在另一元素后的元素,且二者有相同父元素,如h2 + p表示选择紧接在 h2 元素之后的所有p元素;

scrapy 中的css使用方法

以a元素来举例说明

  • response.css('a'):返回的是selector对象;

  • response.css('a').extract():返回的是a标签对象;

  • response.css('a::text').extract_first():返回的是第一个a标签中文本的值;

  • response.css('a::attr(href)').extract_first():返回的是第一个a标签中href属性的值;

  • response.css('a[href*=image]::attr(href)').extract():返回所有a标签中href属性包含image的值;

  • response.css('a[href*=image] img::attr(src)').extract():返回所有a标签下image标签的src属性;

表达式书写方式表达式意义
#box选取id为box的元素
.box选取class为box的元素
p选择所有 p 元素
div img选取div下的img元素
div,img选择所有 div 元素和所有 img 元素
div#box选取 id为box的div元素
div>p选择父元素为 div 元素的所有 p 元素
[title~=flower]选择 title 属性包含单词 “flower” 的所有元素
a[href=”/page/2”]选取href属性为/page/2的a元素
a[href^=”/page”]选取href属性以/page开头的a元素
a[href$=”.png”]选取href属性以png结尾的a元素
  • 上一节中我们使用XPATH选择器获取了csdn中今日推荐的标题,现在我们用CSS选择器来试着获取一下

# -*- coding: utf-8 -*-
import scrapy
class CsDNSpider(scrapy.Spider):
    name = 'csdn'
    allowed_domains = ['www.csdn.net']
    start_urls = ['http://www.csdn.net/']
    def parse(self, response):
       result = response.css('.company_list .company_name a::text').extract()
       for i in result:
           print(i)
  • 我们来看一下代码的运行结果,看是否能获取到我们想要的信息;

爬虫Scrapy框架之css选择器如何使用

获取元素的跳转链接和图片地址

  • 首先可以使用css选择器提取元素的跳转链接和图片的src地址,这里需要用到urllib库中的parse.urljoin()方法,用它来拼接获取到的元素中的路径,使之变为绝对路径;
    urljoin(baes,url[,allow_frafments]),其中参数base作为基地址,与第二个参数为相对路径的url相结合,组成一个绝对URl地址,其中参数allow_fragments可根据自己的需求设置;

import scrapy
from urllib import parse
class DribbbleSpider(scrapy.Spider):
    name = 'dribbble'
    allowed_domains = ['dribbble.com']
    start_urls = ['http://dribbble.com/']
    def parse(self, response):
        a_href = response.css('.dribbble-shot .dribbble-over::attr(href)').extract_first("")
        href = parse.urljoin(response.url, a_href)
        print(a_href)
        print(href)
import scrapy
from urllib import parse
class DribbbleSpider(scrapy.Spider):
    name = 'dribbble'
    allowed_domains = ['dribbble.com']
    start_urls = ['http://dribbble.com/']
    def parse(self, response):
        image_src = response.css('img.enrique-image::attr(src)').extract_first("")
        src = parse.urljoin(response.url, image_src)
        print(image_src)
        print(src)
  • 下载且保存图片到本地

import scrapy
from urllib import parse
import requests
class DribbbleSpider(scrapy.Spider):
    name = 'dribbble'
    allowed_domains = ['dribbble.com']
    start_urls = ['http://dribbble.com/']
    def parse(self, response):
        image_src = response.css('img.enrique-image::attr(src)').extract_first("")
        src = parse.urljoin(response.url, image_src)
        ret = requests.get(src, stream=True)
        with open('./1.png', 'wb') as f:
            for block in ret.iter_content(chunk_size=1024):
                f.write(block)

如何快速获取页面中的元素

  • 获取xpath选择器的元素:选择标签->鼠标右键->copy->Copy XPath;

爬虫Scrapy框架之css选择器如何使用

  • 获取css选择器的元素:可以使用第三方插件Chrome的开发者调试工具获取,需要下载CSS Select插件->然后直接选择标签元素;

爬虫Scrapy框架之css选择器如何使用

关于“爬虫Scrapy框架之css选择器如何使用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

当前文章:爬虫Scrapy框架之css选择器如何使用
文章分享:/article18/pjpddp.html

成都网站建设公司_创新互联,为您提供外贸建站企业建站自适应网站移动网站建设搜索引擎优化星空体育app最新版本(2024已更新)

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化