XPath:通过当前节点属性选择当前和下一个节点的文本

2024-01-15

如果这是一个重复的问题,我很抱歉,但我在 SO 或其他地方找不到另一个问题来处理我需要的内容。这是我的问题:

我在用着scrapy从中获取一些信息this http://www.utm.utoronto.ca/regcal/WEBLISTCOURSES1.html网页。为了清楚起见,以下是该网页的源代码块,我对此感兴趣:

<p class="titlestyle">ANT101H5 Introduction to Biological Anthropology and Archaeology 
                        <span class='distribution'>(SCI)</span></p> 

<span class='normaltext'> 
Anthropology is the global and holistic study of human biology and behaviour, and includes four subfields: biological anthropology, archaeology, sociocultural anthropology and linguistics. The material covered is  directed  to answering the question: What makes us human? This course is a survey of  biological  anthropology and  archaeology.  [<span class='Helpcourse'
            onMouseover="showtip(this,event,'24 Lectures')"
            onMouseout="hidetip()">24L</span>, <span class='Helpcourse'
            onMouseover="showtip(this,event,'12 Tutorials')"
            onMouseout="hidetip()">12T</span>]<br> 

<span class='title2'>Exclusion: </span><a href='javascript:OpenCourse("WEBCOURSENOTFOUND.html")'>ANT100Y5</a><br>

<span class='title2'>Prerequisite: </span><a href='javascript:OpenCourse("WEBCOURSEANT102H5.pl?fv=1")'>ANT102H5</a><br> 
</span><br/><br/<br/> 

该页面上的几乎所有代码都类似于上面的代码块。

从这一切中,我需要抓住:

  1. ANT101H5 生物人类学和考古学导论
  2. 排除:ANT100Y5
  3. 先决条件:ANT102H5

问题是Exclusion:是在一个里面<span class="title2"> and ANT100Y5是在下面的里面<a>.

我似乎无法从源代码中获取它们。目前,我有尝试(但失败)抓取的代码ANT100Y5看起来像:

hxs = HtmlXPathSelector(response)
    sites = hxs.select("//*[(name() = 'p' and @class = 'titlestyle') or (name() = 'a' and @href and preceding-sibling::'//span/@class=title2')]")

我很感激任何对此的帮助,即使它是“你因为没有看到另一个完美回答这个问题的问题而盲目”(在这种情况下,我自己将投票结束这个问题)。我实在是无计可施了。

提前致谢

编辑:在@Dimitre建议的更改后完成原始代码

我正在使用以下代码:

class regcalSpider(BaseSpider):
    name = "disc"
    allowed_domains = ['www.utm.utoronto.ca']
    start_urls = ['http://www.utm.utoronto.ca/regcal/WEBLISTCOURSES1.html']

    def parse(self, response):
            items = []
            hxs = HtmlXPathSelector(response)
            sites = hxs.select("/*/p/text()[1] | \
                              (//span[@class='title2'])[1]/text() | \
                              (//span[@class='title2'])[1]/following-sibling::a[1]/text() | \
                              (//span[@class='title2'])[2]/text() | \
                              (//span[@class='title2'])[2]/following-sibling::a[1]/text()")

            for site in sites:
                    item = RegcalItem()
                    item['title'] = site.select("a/text()").extract()
                    item['link'] = site.select("a/@href").extract()
                    item['desc'] = site.select("text()").extract()
                    items.append(item)
            return items

            filename = response.url.split("/")[-2]
            open(filename, 'wb').write(response.body)

这给了我这个结果:

[{"title": [], "link": [], "desc": []},
 {"title": [], "link": [], "desc": []},
 {"title": [], "link": [], "desc": []}]

这不是我需要的输出。我究竟做错了什么?请记住,我正在运行此脚本this http://www.utm.utoronto.ca/regcal/WEBLISTCOURSES1.html, 如上所述。


.1. ANT101H5 生物人类学和考古学导论

p[@class='titlestyle']/text()

.2.排除:ANT100Y5

concat(
    span/span[@class='title2'][1],
    span/span[@class='title2'][1]/following-sibling::a[1]
    )

.3.先决条件:ANT102H5

concat(
    span/span[@class='title2'][2],
    span/span[@class='title2'][2]/following-sibling::a[1]
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XPath:通过当前节点属性选择当前和下一个节点的文本 的相关文章

  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • DOSBox 上的 8086 程序集: idiv 指令有错误?

    我正在帮助我的一个朋友调试他的程序 我们将其范围缩小到甚至在这里出现的问题 MODEL small STACK 16 CODE start mov ax 044c0h mov bl 85 idiv bl exit mov ax 4c00h
  • AWK - 如何列匹配文件 A 中的多个匹配项与文件 B 中的一个匹配项

    我试图在文件 A 中的第 1 列和文件 B 中的第 2 列之间找到匹配的字符串 并为每个匹配打印文件 A 文件 B 的整行 问题是文件 A 的第 1 列中有多个具有相同值的字符串 当我使用 awk 解决方案时 它只打印最后一个匹配项而不是所
  • C++/WinRT(Windows SDK 17134 的一部分)与 Visual Studio 15.8 Preview 3 不兼容

    尝试编译以下代码 include
  • 从另一个类访问静态变量

    我在同一个包中有两个类 我已经宣布了static variable在一个类中 并且想要在另一个类中访问该变量 这是我的代码 其中声明了静态变量 public class wampusGUI extends javax swing JFram
  • 重复使用黄瓜步骤

    我想重复使用一些黄瓜步骤 但似乎找不到正确的方法 我想写一个这样的步骤 Given I login with credentials type do stuff with type being one of invalid or valid
  • 了解自下而上的杆切割实施

    In 算法导论 CLRS https rads stackoverflow com amzn click com 0262033844 科门等人 下面谈谈解决切棒问题 第369页 EXTENDED BOTTOM UP CUT ROD p n
  • 如何用计算表达式替换捕获组(向捕获组添加整数值)

    我需要用这种格式转换一些字符串 B12F34 类似的事情 12号楼 34楼 但我必须向第二个捕获组添加一个值 例如 10 这样新字符串将如下所示 12号楼 楼44 我可以使用这个 postgres 句子来完成几乎所有事情 但我不知道如何将值
  • 如何抑制 Flash 迁移警告 (1090)

    在 Flash Professional CS4 中 当我使用鼠标 键盘输入处理程序名称 例如 onMouseDown onKeyUp 等 时 我会收到 迁移问题 警告 即使我已为它们添加了事件侦听器 这些名称对于函数来说是完全合法的 但由
  • 让 Ninject 管理我的交易状态,实践关注点

    我让 Ninject 管理我的ISession and ITransaction使用以下注册方法在 Fluent nHibnerate 中进行状态 我想知道它是否足以控制事务 或者我是否需要将其放在其他地方 想法是 每个ISession根据
  • 哎呀!失去与未定义的连接 - 连接建立后立即失去连接

    过去几天我一直在尝试 spring 4 websocket 但有一个问题 我正在使用 apache tomcat 8 这不是一个 Maven 项目 这是我的片段 索引 jsp
  • css - 如何拉伸和自动调整背景图像大小

    我试图让我的背景图像延伸到整个页面 但到目前为止我有这个 这是我想要在浏览器窗口中拉伸的图片 我的外部 CSS 包含以下代码 hr color sienna p margin left 20px body background image
  • 从另一个线程关闭表单

    我有这个运行的代码 exe string openEXE C Users marek Documents Visual Studio 2012 Projects tours tours bin Debug netpokl exe Proce
  • 如何扩展 MongoDB?

    我知道 MongoDB 可以垂直扩展 如果我的磁盘空间不足怎么办 我目前正在使用 EC2 和 EBS 如您所知 我必须为 EBS 分配固定大小 如果 MongoDB 的增长大于 EBS 的大小怎么办 我是否必须创建更大的 EBS 并复制并粘
  • AsyncTask 中的 ProgressDialog

    我试图在从 HTTP 服务器加载 RSS 提要时显示自定义进度对话框 我进行了艰苦的搜索 但没有任何帮助我做到这一点 我唯一知道的是该解决方案应该使用AsyncTask 但我对传递给它的参数感到困惑AsyncTask 这是我的活动 publ
  • Python中四分位距应该如何计算?

    我有一个数字列表 1 2 3 4 5 6 7 我想要一个函数来返回这个数字列表的四分位数范围 四分位数间距是上四分位数和下四分位数之间的差值 我尝试使用 NumPy 函数和 Wolfram Alpha 计算四分位数范围 我发现所有的答案 从
  • 错误:R Shiny 图的第一个参数无效

    我编写了一个 R 脚本来使用 R 来训练自己和其他人使用 Shiny 人们可以选择一个数据集并在基础图上绘制 x 和 y 变量 还有一些其他用户定义的参数 这一切都有效 但它也会引发 错误 第一个参数无效 这可以在 绘图 选项卡 在闪亮的仪
  • Python:计算 Pandas 中两列之间的 tf-idf 余弦相似度时出现 MemoryError

    我正在尝试计算 Pandas 数据框中两列之间的 tf idf 向量余弦相似度 一列包含搜索查询 另一列包含产品标题 余弦相似度值旨在成为搜索引擎 排名机器学习算法的 特征 我在 iPython 笔记本中执行此操作 不幸的是遇到了 Memo
  • 在 javascript 中替换多个
    替换为单个

    我想更换多个 br 带有单个的标签 br 在一段文字中 我的文字就像 p fhgfhgfhgfh p br br p ghgfhfgh p br br p fghfghfgh p br br p fghfghfgh p br br p fg
  • Haskell 有什么大惊小怪的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • XPath:通过当前节点属性选择当前和下一个节点的文本

    如果这是一个重复的问题 我很抱歉 但我在 SO 或其他地方找不到另一个问题来处理我需要的内容 这是我的问题 我在用着scrapy从中获取一些信息this http www utm utoronto ca regcal WEBLISTCOUR