Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python/Scrapy在h1中提取p_Python_Html_Scrapy_Lxml - Fatal编程技术网

用Python/Scrapy在h1中提取p

用Python/Scrapy在h1中提取p,python,html,scrapy,lxml,Python,Html,Scrapy,Lxml,我正在使用Scrapy从网站上提取一些关于音乐会的数据。根据W3C的说法,至少有一个我正在使用的网站使用不正确——h1元素中的p元素。然而,我需要提取p元素中的文本,并且无法理解如何提取 我已经阅读了文档并查看了示例用法,但对Scrapy来说还是比较新的。我知道解决方案与将选择器类型设置为xml而不是html有关,以便识别任何xml树,但就我个人而言,我不知道在这个实例中如何或在何处这样做 例如,网站具有以下HTML: <h1 class="performance-title"> &

我正在使用Scrapy从网站上提取一些关于音乐会的数据。根据W3C的说法,至少有一个我正在使用的网站使用不正确——h1元素中的p元素。然而,我需要提取p元素中的文本,并且无法理解如何提取

我已经阅读了文档并查看了示例用法,但对Scrapy来说还是比较新的。我知道解决方案与将选择器类型设置为xml而不是html有关,以便识别任何xml树,但就我个人而言,我不知道在这个实例中如何或在何处这样做

例如,网站具有以下HTML:

<h1 class="performance-title">
<p>Bernard Haitink conducts Brahms and&nbsp;Dvořák featuring pianist     Emanuel Ax
</p>
</h1>
这将在项目['title']中返回一个unicode列表,该列表不包括p元素中的文本,例如:

['\n                 ', '\n                 ', '\n                ']
我明白为什么,但我不知道如何避开它。我也尝试过这样的事情:

from scrapy import Selector

def parse_item(self, response):  

    s = Selector(text=' '.join(response.xpath('.//section[@id="performers"]/text()').extract()), type='xml')
我在这里做错了什么,如何解析h1中包含问题p的HTML


我在上引用了有关此特定问题的信息,但它没有提供可应用于spider的完整解决方案,仅提供了使用给定文本字符串的会话中的一个示例

这真让人费解。坦率地说,我仍然不明白为什么会发生这种情况。发现应该包含在标记中的标记不是这样。站点的Curl显示为

,而从站点获得的响应显示为:

//*[@id="content"]/section/article/section[2]/h1/p/text()

这是通过使用作为地标并找到它的同级标记来实现的

除了在chrome开发工具控制台$x'='//h1[@class=performance title]/text中尝试之外,还可以尝试使用xpath://h1[@class=performance title]/text'谢谢。我刚才试过了,但仍然得到了一组类似的空字符串。请将链接发送给我!谢谢你的帮助。你能告诉我你是在什么情况下让这个工作的吗?当放入上面我的剪贴代码时,它根本不会返回任何项目['title']。我引用了:并修改了问题以包含这些链接。当然,很高兴能提供帮助。
//*[@id="content"]/section/article/section[2]/h1/p/text()
<h1 class="performance-title">\n</h1>
<p>Bernard Haitink conducts Brahms and\xa0Dvo\u0159\xe1k featuring\npianist Emanuel Ax
</p>
response.xpath('//h1[@class="performance-title"]/following-sibling::p/text()').extract()