用于选择输入标记元素的scrapy Xpath查询(bounty)
我正在使用scrapy crawl spider并尝试解析输出页面以选择所有输入标记参数,如下所示:用于选择输入标记元素的scrapy Xpath查询(bounty),xpath,scrapy,Xpath,Scrapy,我正在使用scrapy crawl spider并尝试解析输出页面以选择所有输入标记参数,如下所示: 输入类型:必须是(文本、密码或文件) 输入id:如果找不到,请选择[input name] 我编写了一个在scrapy shell中测试的示例代码,但它没有给出确切的结果 那么,你能帮我吗 测试地点: >>>hxs.select('//input[@id]|//input[@type=“text”]|/text()).extract() [u'”, u', u', u', u''] 我不知道
- 输入类型:必须是(文本、密码或文件)
- 输入id:如果找不到,请选择[input name]
>>>hxs.select('//input[@id]|//input[@type=“text”]|/text()).extract()
[u'”,
u',
u',
u',
u'']
我不知道Scrapy,但从纯XPath的角度来看,以下内容应该满足您描述的要求:
//input[(@id or @name) and (@type = 'text' or @type = 'password' or @type = 'file')]
另外,我注意到您正在尝试检索所选节点的文本内容。这可能不会返回任何内容,因为输入是自动关闭标记,不包含内部内容。我不知道Scrapy,但从纯XPath的角度来看,以下内容应该满足您描述的要求:
//input[(@id or @name) and (@type = 'text' or @type = 'password' or @type = 'file')]
另外,我注意到您正在尝试检索所选节点的文本内容。这可能不会返回任何内容,因为输入是自动关闭的标记,不包含内部内容。所有
输入文本、密码或文件类型的元素:
//input[@type='text' or @type='password' or @type='file']
我不确定您想要在id或名称上设置什么条件-这将获得具有id或名称的这三种类型的所有input
元素:
//input[(@type='text' or @type='password' or @type='file') and (@id or @name)]
如果要测试id或名称(如果id不存在)是否等于(XXXX
):
如果要提取id,请执行以下操作:
//input[@type='text' or @type='password' or @type='file']/@id
我认为,如果未指定id,则无法使用标准XPath提取id或名称。所有输入类型的元素文本
,密码
或文件
:
//input[@type='text' or @type='password' or @type='file']
我不确定您想要在id或名称上设置什么条件-这将获得具有id或名称的这三种类型的所有input
元素:
//input[(@type='text' or @type='password' or @type='file') and (@id or @name)]
如果要测试id或名称(如果id不存在)是否等于(XXXX
):
如果要提取id,请执行以下操作:
//input[@type='text' or @type='password' or @type='file']/@id
我认为,如果未指定id,则无法使用标准XPath提取id或名称。|/text()
是根目录下的任何文本(这没有多大意义)-而不是所选节点的文本感谢帮助,但是我得到了这个错误,看起来是因为你在单引号中使用单引号。将您的值设为双引号,即包装整个XPath表达式的值。@Utkanos我也认为这可能是引号问题,所以我使用了三个引号,但结果得到了一个空列表。我还尝试了hxs.select(“”/input[@type=“text”或@type=“password”或@type=“file”]/text()“”)。extract()
但它也给了我一个空列表|/text()
是根目录下的任何文本(这没有多大意义)-不是所选节点的文本感谢您的帮助,但我得到了这个错误,因为您在单引号中使用单引号。将您的值设为双引号,即包装整个XPath表达式的值。@Utkanos我也认为这可能是引号问题,所以我使用了三个引号,但结果得到了一个空列表。我还尝试了hxs.select(“”/input[@type=“text”或@type=“password”或@type=“file”]/text()“”)。extract()
但它也给了我一个空列表非常感谢您的帮助,但我遇到了这个错误(也是上面的错误,我还认为这可能是引用问题,所以我使用了三重引号,但结果是得到了一个空列表。请尝试在XPath中使用单引号(在XPath中,单引号和双引号是等价的-因此,如果必须使用双引号来分隔整个XPath,通常可以在XPath中使用单引号)仍然得到空列表,,请提供帮助,我们将不胜感激:)抱歉,不知道-XPath在转换为XML的页面上工作正常,我没有scrapy来测试它,非常感谢您的帮助,但是我遇到了这个错误(也是上面的同一个错误,我还认为这可能是引用问题,所以我使用了三重引号,但结果是我得到了一个空列表,请尝试在XPath中使用单引号)(在XPath中,单引号和双引号是等价的-因此,如果必须使用双引号来分隔整个XPath,则通常可以在XPath中使用单引号)仍然有空列表,,请提供帮助,我们将不胜感激:)抱歉,不知道-XPath在转换为XML的页面上工作正常,我没有scrapy来测试它