
Scrapling 选择器完全手册CSS、XPath、正则、文本搜索 12 种取数方法速查清单【免费下载链接】Scrapling️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/ScraplingScrapling是一个自适应的 Python 爬虫框架既能处理单次请求也能支撑大规模抓取。它的核心是Selector选择器对象——拿到 HTML 后你可以用 CSS 选择器、XPath、正则表达式、文本内容四种主流方式取数。本手册把12 种常用取数方法整理成一份速查清单帮你从新手入门到实战查表一查就会少走弯路。为什么选 Scrapling 选择器Scrapling 的解析能力来自对lxml的封装逻辑与 Scrapy/Parsel 一脉相承老手可以无缝迁移同时它额外提供了按文本查找、查找相似元素、过滤式查找等对新手更友好的方法。从架构图可以看到抓取到的Response会交给Selector解析再产出结构化的Items。选择器就是「响应 → 数据」之间的关键一环。核心对象与文档入口选择器主类scrapling/parser.py查询元素文档docs/parsing/selection.md主类详解docs/parsing/main_classes.md文本处理类型scrapling/core/custom_types.pyCSS 转 XPathscrapling/core/translator.py12 种取数方法速查清单先用Selector加载页面page代表页面对象from scrapling import Selector page Selector(html.../html, urlhttps://example.com)下表按「怎么找」和「怎么取」两大类汇总 12 种方法方便速查。#方法作用一句话用法1css()CSS 选择器page.css(.product)2xpath()XPath 选择器page.xpath(//a/href)3find()过滤式查找返回第一个page.find(a, class_btn)4find_all()过滤式查找返回全部page.find_all(div, {class:item})5find_by_text()按文本内容查找page.find_by_text(价格, partialTrue)6find_by_regex()按正则匹配文本查找page.find_by_regex(r£[\d\.])7find_similar()查找相似元素el.find_similar()8search()/filter()在结果集合中再筛选page.css(.p).filter(fn)9get()/getall()Scrapy 风格取值page.css(h1::text).get()10.text/get_all_text()取元素文本page.css(h1)[0].text11re()/re_first()正则抽取字段el.re(r\d\.?\d*)12.attrib/has_class()/json()取属性与结构化数据el.attrib[href]CSS 选择器最稳妥的按类取数css()支持 W3C CSS3 规范并扩展了取文本/属性的伪元素::text取文本::attr(name)取属性值。title page.css(h1::text).get() # 取第一个 h1 文本 link page.css(a::attr(href)).get() # 取第一个链接地址小贴士按类取数时优先用 CSS。XPath 的[classproduct]在多 class 场景下可能不准。XPath 选择器灵活强大的节点定位xpath()通过lxml原生提供适合复杂结构定位。可自由嵌套与链式调用title page.xpath(//*[classproduct]//h1[contains(text(),Phone)]/text()).get()注意Scrapling 没有实现has-class扩展函数需要用has_class()方法代替。文本搜索新手最易上手的取数方式不会写选择器直接按「看到的文字」找元素即可。精确/包含查找find_by_text(关键词, partialTrue)partialTrue表示包含匹配。正则查找find_by_regex(r£[\d\.])可传字符串或已编译的正则。el page.find_by_text(Tipping the Velvet) url page.urljoin(el.attrib[href]) # 相对路径转完整 URL共同参数first_match默认只返回第一个、case_sensitive是否区分大小写、clean_match匹配前清理空格。过滤式查找像 BeautifulSoup 一样直白find()/find_all()借鉴自 BeautifulSoup 的find_all支持标签名、属性字典、正则、函数多种条件「瀑布式」叠加# 所有 class 为 quote 的 div page.find_all(div, class_quote) # 属性值结尾匹配 page.find_all({href$: Einstein}) # 属性值包含匹配 page.find_all({href*: /author/})查找相似元素从 1 个复制到 N 个find_similar()是 Scrapling 的招牌能力先找到一个元素如某商品卡片再自动找出同层级、同结构的其它同类元素。first page.find_by_text(Add to Cart) siblings first.find_similar() # 自动找出其余商品卡片数据抽取从元素到字符串找到元素后用下面几种方式把数据「掏出来」取文本el.text取直接文本el.get_all_text()递归取全部文本。Scrapy 风格get()取第一个值getall()取全部值等价于extract_first/extract。正则抽取re()/re_first()可从文本里精确抽字段。price page.css(.price_color)[0].re_first(r[\d\.]) # - 51.77 prices page.css(.price_color).re(r[\d\.]) # - [51.77, ...]取属性与结构化el.attrib[href]取属性has_class(x)判断 classjson()直接把文本内容解析成 JSON 对象。为元素生成选择器一次查找长期复用任意元素都能反推出可复用的 CSS / XPath 选择器不管你是用哪种方法找到的它el.generate_css_selector # 尽量短的 CSS 选择器 el.generate_full_xpath_selector # 从页面根开始的完整 XPath新手速记3 条黄金法则优先 CSS 按类取数比 XPath 更稳、更短。不会写选择器就用find_by_text/find_all按肉眼可见的文字定位。拿到元素后链式取值get()取第一个getall()取全部re_first()抽字段。把上面 12 种方法对照速查表收藏起来绝大多数网页取数场景都能直接查表解决。【免费下载链接】Scrapling️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考