Scrapy 教程(三)-网站解析

news/2024/5/10 9:29:21/文章来源:https://blog.csdn.net/weixin_30462049/article/details/98897838

有经验的人都知道,解析网站需要尝试,看看得到的数据是不是想要的,那么在scrapy中怎么尝试呢?

 

调试工具-shell

主要用于编写解析器

命令行进入shell

scrapy shell url

这个命令其实是个下载器

 

shell 界面

 

获取数据

解析命令 response.css('title'),验证获取的数据正确与否

 

退出shell

exit即可

 

用法2

直接输入 scrapy shell 命令,进入shell模式

 

用法3

实际上在shell中编写“选择器表达式”也是要借助浏览器的,但是直接用浏览器打开网页用程序访问到的response可能不同,因为有动态页面,所以需要用浏览器打开程序访问到的response

view(response) 命令就是用浏览器打开response;实际上是一个本地的html文件

 

此时我们注意到:shell 界面中有个 Userful shortcuts,包含了几个命令,其中包含了view(response), 还有上例中的 fetch(req)

 

css 选择器

3个函数:response.css('css表达式')、extract()、extract_first()

3个提取内容:标签、标签属性、标签内容

 

标签提取

css 表达式为标签

response.css('title')   获取 title 标签 ,其他标签方法相同,如body 、div 、p、a等

生成一个 Selector 列表,如上图,相当于一个选择器

css 表达式为 id 或 class

response.css('#id')
response.css('.class')

方法

response.css('title').extract()    提取标签列表,如 ['<title>爬虫实验室 - SCRAPY中文网提供</title>']
response.css('title').extract()[0]
or
response.css('title').extract_first()    获取第一个元素,如 '<title>爬虫实验室 - SCRAPY中文网提供</title>'
response.css('title::text').extract_first()    提取title标签中的text,如 '爬虫实验室 - SCRAPY中文网提供'

 

标签属性的提取

css表达式为 标签名::attr(属性名)

a::attr(href)
img::attr(src)

多层标签的属性

response.css('.class a::attr(href)')
response.css('.class #id a')

class and id 层标签之间空格即可

 

标签内容的提取

css 表达式为 ::text

response.css("div::text").extract()              标签的text
response.css(".center::text").extract()         class的text
response.css(".post-content *::text").extract()    class中所有标签的text

* 表示所有标签

 

css 选择器 高级用法

 

 

XPath 选择器

XPth 简介

xpath 使用路径表达式在xml文档中选取节点。

 

请看一个xml例子

<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book><title lang="en">Harry Potter</title><author>J K. Rowling</author> <year>2005</year><price>29.99</price>
</book></bookstore>

节点之间的关系

父: book 是 title 的父

子: year 是 book 的子

同胞: book year 是同胞

先辈:title 的先辈是 book  bookstore

后代:bookstore 的后代是 book title 

 

路径表达式

表达式描述
nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。

 

 

 

 

 

 

 

 

 

举例

路径表达式结果
bookstore选取 bookstore 元素的所有子节点。
/bookstore

选取根元素 bookstore。

注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book选取属于 bookstore 的子元素的所有 book 元素。
//book选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang选取名为 lang 的所有属性。

 

 

 

 

 

 

 

 

 

 

 

 

XPath 选择器

3个函数:response.xpath('表达式')、extract()、extract_first()

4个提取内容:标签、标签属性、标签内容、标签内的所有文字

 

标签

省略

 

标签属性

表达式为 @属性名

//@href                     所有 href 
//ol//@href                ol标签下所有 href
//ol[@class="page-navigator"]//@href     具有某属性的标签ol下的所有href

 

标签内容

表达式为 //text()

//ul[@class='tags-list']//a//text()

 

标签内的所有文字

表达式为 string(标签)

提取标签及其后代的所有文字,并连在一起

response.xpath("string(//div[@class='post-content'])").extract()

 

实例

路径表达式结果
/bookstore/book[1]选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3]选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang]选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng']选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00]选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

 

 

 

 

 

 

 

 

 

 

 

 

 

通配符

通配符描述
*匹配任何元素节点。
@*匹配任何属性节点。
node()匹配任何类型的节点。

 

 

 

 

 

 

 

实例

路径表达式结果
/bookstore/*选取 bookstore 元素的所有子元素。
//*选取文档中的所有元素。
//title[@*]选取所有带有属性的 title 元素。

 

 

 

 

 

 

 

XPath 选择器 详细教程

 

也可以用 BeautifulSoup 进行解析

转载于:https://www.cnblogs.com/yanshw/p/10844750.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_793854.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何搭建小型视频点播网站

视频点播是二十世纪90年代在国外发展起来的&#xff0c;英文称为“Video on Demand”&#xff0c;所以也称为“VOD”。顾名思义&#xff0c;就是根据观众的要求播放节目的视频点播系统&#xff0c;把用户所点击或选择的视频内容&#xff0c;传输给所请求的用户。视频点播业务是…

(ESC IIS笔记)建站并提供外网入口

文章目录1.连接自己的云服务器2.配置IIS3.新建站点4.提供外网1.连接自己的云服务器 ①可通过浏览器或者本机的远程服务功能(用后者比较方便) 方法一&#xff1a;winR - MSTSC 方法二&#xff1a;window附件 ②显示选项-本地资源-详细信息-驱动器&#xff0c;此步骤方便我们在…

全·SEO笔记

一.SEO概述 1.SEO(Search Engine Optimization) 中文翻译为搜索引擎优化&#xff0c;是利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名的一种方式。目的是让其在行业内占据领先地位&#xff0c;获得品牌收益。很大程度上是网站经营者的一种商业行为&#xff0c;将自己…

未能将网站配置为使用ASP.NET4.5(待解决)

电脑上更新了VS版本或升级补丁或升级了framework或升级了windows可能会遇到此问题。 第一步是&#xff1a;配置IIS应用程序池.net framework的版本&#xff0c; 第二步&#xff0c;运行--->cmd--->输入 %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe…

为ASP网站引用WCF后台

编码环境&#xff1a; 系统&#xff1a;Win8 平台&#xff1a;Visual Studio 10 框架&#xff1a;.Net Framework4.0 WCF后台&#xff1a;IIS 8.5 步骤&#xff1a; 1、打开VS,新建一个ASP.NET Web应用程序&#xff0c;取名为WCFClient。 2、选中WCFClient项目&#…

iis发布网站,网站访问地址

iis发布网站&#xff0c;网站默认访问地址主机名

IIS服务器配置及网站发布

ASP.NET运行环境的设置 1、开始—控制面板—程序|程序和功能—打开|关闭Windows功能–&#xff1b; 2、Internet信息服务————web管理工具————万维网服务————&#xff08;。Net扩展、ASP、ASP.NET、ISAPI扩展、ISAPI扩展器&#xff09;&#xff1b; &#xff08;…

devc 能优化吗_SEO优化选择热门关键词好吗?关键词如何选择?

随着行业与行业之间的竞争愈加激烈&#xff0c;想在互联网环境下进行各种推广营销活动&#xff0c;必须学会利用网络平台进行宣传&#xff0c;而SEO优化是必不可少的推广方式之一。通过SEO优化&#xff0c;可以提升企业网站自然排名和流量&#xff0c;让企业可以持之以恒的发展…

seo伪原创软件_公开seo文章Ai伪原创技术,让更多seo技术受益

2020年对seo行业来说&#xff0c;可以说是分水岭的一年。随着百度搜索技术的不断更新变化&#xff0c;对内容质量的要求也是越来越高。高粱seo看到很多seo技术&#xff0c;因为文章的问题&#xff0c;深感头疼。为此&#xff0c;市面上推出了很多所谓的Ai伪原创技术&#xff0c…

wordpress本地网站怎么搬到服务器,如何在本地搭建wordpress网站(图文教程)

以安装wordpress程序为例&#xff0c;通过配置环境&#xff0c;为大家讲解在本地搭建网站的过程&#xff1a;一&#xff0c;在本地配置服务器环境这个主要用相关软件工具来实现&#xff0c;这类软件工具在网上很多&#xff0c;在这里就用我常用的phpStudy来为大家讲解&#xff…

HTML优秀网站引导载入页源码

今天给大家分享一款源码&#xff0c;可以用作网站引导、网站载入&#xff0c;甚至可以做为***网页。 分享此源码 赞作者使用的效果&#xff0c;感觉很不错&#xff01;赞&#xff01; 其它的先不说&#xff0c;先来看下效果。 认为效果可以的、认为自己以后能用到的&#xff0c…

php进行服务器架构,PHP建站通过服务器架构及实战的方法

PHP的环境搭建PHP的帮助使用和配置文件PHP的Hello WorldPHP的库函数调用PHP的Web程序PHP的函数和面向对象使用PHP的数据库访问Nginx安装和配置访问WordPress的安装和配置实用推进资料&#xff1a;图书&#xff0c;视频&#xff0c;代码等总述PHP基础环境准备安装虚拟机VM(Virtu…

Vue+thinkJs博客网站(一)之vue多页面应用的webpack3配置

一.项目简介 本项目使用vue作为前端框架&#xff0c;thinkJs作为后端框架&#xff0c;构建个人博客网站&#xff0c;页面分为博客展示和后台管理&#xff0c;主要目的是学习使用thinkJs。现在只完成了主要的博客增删改功能&#xff0c;发现webpack的配置遇到了一些坑&#xff0…

[摘录]大型网站架构演变和知识体系

架构演变第一步&#xff1a;物理分离webserver和数据库最开始&#xff0c;由于某些想法&#xff0c;于是在互联网上搭建了一个网站&#xff0c;这个时候甚至有可能主机都是租借的&#xff0c;但由于这篇文章我们只关注架构的演变历程&#xff0c;因此就假设这个时候 已经是托管…

大型网站前端使用图片格式的正确姿势

在网页上使用JPG、PNG和SVG&#xff1a;新手指南 | Cheesecake Labs 本文转载自&#xff1a;众成翻译 译者&#xff1a;lunasun 审校: lizheming 链接&#xff1a;http://www.zcfy.cc/article/3211 原文&#xff1a;https://cheesecakelabs.com/blog/jpg-png-svg-web-begin…

怎么卸载deepin linux,Linux deepin怎么卸载不用的旧内核_网站服务器运行维护,Linux...

鼠标右击没有新建word选项怎么解决_网站服务器运行维护鼠标右击没有新建word选项的解决方法&#xff1a;1、按【winr】组合键打开运行&#xff0c;输入【regedit】&#xff0c;点击【确定】&#xff1b;2、右键点击【.doc】文件夹&#xff0c;选择【新建】、【项】&#xff0c;…

织梦pc自适应网站伪静态教程

织梦pc自适应网站伪静态教程 一、 网站后台开启伪静态选项 二、网站后台设置整站为动态 织梦全站动态静态一键切换插件 三、电脑站伪静态教程开始 1、列表页和内容页伪静态链接 打开 /plus/list.php 找到 $tid (isset($tid) && is_numeric($tid) ? $tid : 0);改…

百度手机端网站域名展现近期调整

百度手机端网站域名展现近期调整 近期有站长发现&#xff0c;百度手机端搜索结果页面部分网站域名链接已经被网站品牌词所代替&#xff0c;效果类似于之前的熊掌号。 当然百度这样的调整对网站本身不产生影响&#xff0c;只是修改了网站域名的展现形式&#xff0c;将网站域名…

织梦将网站数据和文件整体打包操作流程

织梦怎么将网站数据和文件整体打包 首先登陆网站后台 - 点击系统 - 选择数据库备份/还原 - 点击提交&#xff08;此步骤是备份网站数据文件&#xff09; 等备份成功后&#xff0c;打开网站根目录文件夹 - 全选文件 - 打包为压缩包 &#xff08;这样网站数据和网站文件都已经打…

织梦cms访问网站后台空白

织梦cms登陆网站后台显示空白页 网站程序&#xff1a;织梦v5.7 所遇问题&#xff1a;网站搬家&#xff0c;重新安装织梦网站&#xff0c;安装后直接访问网站后台显示空白 织梦cms登陆网站后台显示空白页解决方法 检查/include/common.inc.php文件配置信息是否正确&#xff0c;…