python学习

Python学习八十一天:爬虫Scrapy框架之css选择器使用

2019-05-09  本文已影响7人  暖A暖

css选择器介绍

css选择器的基本语法

scrapy 中的css使用方法

以a元素来举例说明

表达式书写方式 表达式意义
#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元素
# -*- 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)

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

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)

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

参考:https://www.9xkd.com/user/plan-view.html?id=3866229787

上一篇 下一篇

猜你喜欢

热点阅读