我希望你做得很好.

<ul>
  <li>
    <s>Title:</s>
    De Aardappeleters
  </li>
  <li>
    <s>Dimensions:</s>
    82 x 114 cm
  </li>
  <li>
    <s>Media:</s>
    canvas
  </li>
  <li>
    <s>Style:</s>
    Realism
  </li>
  <li>
    <s>Date:</s>
    1885
  </li>              ______
  <li>                     |
    <s>Genre:</s>          | It is located on a page of the website here
    Modern                 |
  </li>              ______| 
</ul> 

我有一个HTML块☝,我想接收来自li的文本.但不幸的是,这li没有我可以 Select 的类或ID.这个区块是用于站点的.

  <li>
    <s>Genre:</s>
    Modern
  </li>

我想 Select 流派列表并获得文本.?

Modern

这里的主要问题是这个区块在另一个页面上是不同的.?

<ul>
  <li>
    <s>Title:</s>
    De Aardappeleters
  </li>
  <li>
    <s>Dimensions:</s>
    82 x 114 cm
  </li>
  <li>
    <s>Media:</s>
    canvas
  </li>              ______
  <li>                     |
    <s>Genre:</s>          |And it is located here on another page.
    Modern                 |
  </li>              ______| 
  <li>
    <s>Style:</s>
    Realism
  </li>
  <li>
    <s>Date:</s>
    1885
  </li>
</ul>
OriginalTagFind = layout.css('article ul li s::text').getall()
    
TitleOriginal = [tag.strip() for tag in OriginalTagFind if tag.startswith('Genre:')] 
  

在我看来,如果我来到我 Select 的地方,并用NEXT SIBLING打印母亲名单的文本.有没有可能是؟

推荐答案

通过使用CSS Select 器,您可以使用:

'li:has(s):contains("Genre:")::text'

使用XPath Select 器,您可以使用:

"//li[s[contains(text(), 'Genre')]]/text()"

我已经通过下面的示例演示了如何使用这两种方法:

In [1]: html = """<ul>
   ...:   <li>
   ...:     <s>Title:</s>
   ...:     De Aardappeleters
   ...:   </li>
   ...:   <li>
   ...:     <s>Dimensions:</s>
   ...:     82 x 114 cm
   ...:   </li>
   ...:   <li>
   ...:     <s>Media:</s>
   ...:     canvas
   ...:   </li>
   ...:   <li>
   ...:     <s>Style:</s>
   ...:     Realism
   ...:   </li>
   ...:   <li>
   ...:     <s>Date:</s>
   ...:     188
   ...:   </li>
   ...:   <li>
   ...:     <s>Genre:</s>
   ...:     Modern
   ...:   </li>
   ...: </ul> """

In [2]: selector = scrapy.Selector(text=html)

In [3]: ''.join(selector.xpath("//li[s[contains(text(), 'Genre')]]/text()").getall()).strip()
Out[3]: 'Modern'

In [4]: ''.join(selector.css('li:has(s):contains("Genre:")::text').getall()).strip()
Out[4]: 'Modern'

Python相关问答推荐

Python 枕头上的图像背景变黑

在for循环中保存和删除收件箱

解析讨论论坛只给我第一个用户 comments ,但没有给我其他用户回复

Snap 7- read_Area用于类似地址的变量

KNN分类器中的GridSearchCV

Python:记录而不是在文件中写入询问在多文件项目中记录的最佳实践

pyautogui.locateOnScreen在Linux上的工作方式有所不同

Pandas 除以一列中出现的每个值

使用FASTCGI在IIS上运行Django频道

在Python中处理大量CSV文件中的数据

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

pandas滚动和窗口中有效观察的最大数量

计算组中唯一值的数量

形状弃用警告与组合多边形和多边形如何解决

创建可序列化数据模型的最佳方法

索引到 torch 张量,沿轴具有可变长度索引

如何指定列数据类型

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

启动带有参数的Python NTFS会导致文件路径混乱

如何找出Pandas 图中的连续空值(NaN)?