假设我正在抓取一个网页,并且我想选择网页上的某个图像。正如您可以根据类名称查找元素一样,我想通过其标签来选择图像src。如何选择我已经知道标签的图像src?
即我想选择标签src为:
https://assets.bandsintown.com/images/pin.svg
Run Code Online (Sandbox Code Playgroud) 尝试更新我的代码以使用"driver.find_element(By.XPATH..."而不是"driver.find_elements_by_xpath(...",但当我发送密钥时,我不断收到以下错误:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
driver = webdriver.Chrome(PATH)
link_login = "https://www.wyzant.com/tutor/jobs"
driver.get(link_login)
username_input = driver.find_element(By.XPATH, "//*[@id='Username']")[1]
username_input.send_keys("Test")
Run Code Online (Sandbox Code Playgroud) 采用以下 XSLT 代码:
\n<?xml version="1.0" encoding="UTF-8"?>\n<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\n version="2.0">\n <xsl:output method="text"/>\n <xsl:template match="/">\n <xsl:value-of select="translate('abc', 'e\xcc\x81abc', 'eabc')"/> <!--0x65CC81-->\n <xsl:value-of select="' '"/>\n <xsl:value-of select="translate('abc', '\xc3\xa9abc', 'eabc')"/> <!--0xC3A9-->\n </xsl:template>\n</xsl:stylesheet>\nRun Code Online (Sandbox Code Playgroud)\n使用 Saxon 10 运行此命令会返回:
\nbc\nabc\nRun Code Online (Sandbox Code Playgroud)\n翻译函数的第一次调用使用 \xc3\xa9 的分解形式(U+0065 和 U+0301),而第二次调用则使用 U+00E9。看来他们并没有受到平等的对待。这是可以预料的吗?这种行为是否在某处指定?
\n我正在尝试使用以下 XPATH 检索表中特定元素的文本:
/html/body/form[2]/table/tbody/tr/td/table/tbody/tr[2]/td[7]/input
Run Code Online (Sandbox Code Playgroud)
使用
driver.maximize_window() # For maximizing window
driver.implicitly_wait(3) # gives an implicit wait for 20 seconds
driver.find_element(By.XPATH, value = "/html/body/form[2]/table/tbody/tr/td/table/tbody/tr[2]/td[7]/input").text()
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
NoSuchElementException: Message: Unable to locate element: /html/body/form[2]/table/tbody/tr/td/table/tbody/tr[2]/td[7]/input
Run Code Online (Sandbox Code Playgroud)
我还尝试通过 CSS 选择器和值访问该元素,但没有成功。不幸的是,该链接是安全的,因此我无法共享它,但这是该元素的屏幕截图
我需要从XML文件中选择一些节点(来自Silverlight XAP文件的AppNamespace.xaml,而不是它很重要),但该文件具有命名空间的东西,因此XPath不起作用.我可以浪费大部分时间试用和错误的XmlNamespaceManager的束缚和纪律噩梦,并最终得到无法容忍的脆弱代码,这些代码无法容忍输入文件中的最轻微变化(在生产代码中不是一个好主意),或者我可以使用荒谬的local-name()语法[1].
但是将XPath用作人类可读的查询语言会更方便,可以用来从任意XML文件返回指定的节点或属性值.
那么有没有办法从文件中删除线路噪音?还是我卡住了?Linq-to-XML的迷宫式是否真的是较小的邪恶?
[1]
//*[local-name() = 'Deployment']/*[local-name() = 'Deployment.Parts']/*[local-name() = 'AssemblyPart']/@*[local-name()='Name']
Run Code Online (Sandbox Code Playgroud)
五年之后,除了一些想要使用更强大的东西的纤维外,我对每一种纤维都支持"迷宫般的低能"一词.
什么是阅读XML的最佳方式?
我的xml就像我会有很多
<A> and <B>, not sure how many will be there and I have to read the whole xml file.
Run Code Online (Sandbox Code Playgroud)
我不能说子元素喜欢
<180> will be there under <A> for sure. So does the other element.
Run Code Online (Sandbox Code Playgroud)
但如果它在那里我必须阅读它.
我应该使用LINQ或XPath还是XMLReader?哪一个更好更容易?
<A>
<180>20130218</180> ///180 is here
<170>5</170>
<220>20080210</220>
<730 CLID='AAA' KW='BBB' KW2='INTERNATIONAL'>
<731>BBB INTERNATIONAL AG</731>
<732>XXX</732>
<735>US66</735>
<734>YYY</734>
</730>
<300>
<301>
<320>20071100</320>
<310>12345</310>
</301>
<330>US</330>
</300>
</A>
<A> ///180 is not here
<170>5</170>
<220>20080210</220>
<730 CLID='AAA' KW='BBB' KW2='WORLD'>
<731>BBB INTERNATIONAL AG</731>
<734>YYY</734>
</730> …Run Code Online (Sandbox Code Playgroud) 我在 selenium webdriver 中使用 CSS 选择器。
假设我有一个如下所示的 DOM:
<div class="test">
<a class="example"> Comet </a>
</div>
<div class="test">
<a class="example"> Asteroid </a>
</div>
<div class="test">
<a class="example"> Planet </a>
</div>
Run Code Online (Sandbox Code Playgroud)
假设我想将标签与“Asteroid”相匹配。如果我使用 CSS 选择器,我可以这样做:div.test > a.example
唯一的问题是这将匹配所有三个。使用 xpath,我可以执行如下操作:(//div/a[@class='example'])[2]这将告诉它选择第二个匹配元素。
有没有办法使用 CSS 选择器来做同样的事情?只需选择第二个或第三个匹配元素?我尝试过:nth-child(),但这似乎只适用于指定节点的子节点,并且似乎不像我给出的 xpath 示例那样工作,或者也许我做错了。
HTML如下:
<a href="#">ABC<BR>DEF</a>
Run Code Online (Sandbox Code Playgroud)
但是,nodeValue 和 textContent 属性都显示"ABCDEF"为值。
有什么方法可以显示或解析<BR>?
在下面的 XML 中,如果 IdealId 元素中的 Type="CARMENT",我需要属性值 (ID="5682094")
<ns0:doingRS xmlns:ns0="http://myorg.com" xmlns:ns2="http://commonOrg">
<ns2:Pass/>
<ns0:something>
<ns0:some abc="false" xyz="false" prq="track" str="RACK" fdg="true" fgdg="true" fdfd="false" ewe="false" ytyt="false" trtrt="false" ewew="false" fdfdf="false" bgn="false" ujm="false" qa="false" qws="false" qwe="false" wqwqwqw="false">
<ns2:SomeRates>
<ns2:SomeRate CodeH="track" someCode="RACK">
<ns2:SomeProfile>
<ns2:SomeProfileList>
<ns2:IdealID Type="Prr" Ideal_CTX="ABC" ID="5033095"/>
<ns2:IdealID Type="CARMENT" Ideal_CTX="ABC" ID=""/>
</ns2:SomeProfileList>
</ns2:SomeProfile>
<ns2:SomeProfile>
<ns2:SomeProfileList>
<ns2:IdealID Type="Prr" Ideal_CTX="ABC" ID="5043839"/>
<ns2:IdealID Type="CARMENT" Ideal_CTX="ABC" ID=""/>
</ns2:SomeProfileList>
</ns2:SomeProfile>
<ns2:SomeProfile>
<ns2:SomeProfileList>
<ns2:IdealID Type="Prr" Ideal_CTX="ABC" ID="5682094"/>
<ns2:IdealID Type="CARMENT" Ideal_CTX="ABC" ID="5682094"/>
</ns2:SomeProfileList>
</ns2:SomeProfile>
</ns2:SomeRate>
</ns2:SomeRates>
</ns0:some>
</ns0:something>
</ns0:doingRS>
Run Code Online (Sandbox Code Playgroud)
所以总而言之,当且仅当属性不为空时,我才需要属性值。如果存在xpath/xquery来提取属性Id,请帮帮我
我想在 javascript 中返回一个在其父元素中没有类的元素。
例如,我想在以下代码片段中获取子类元素,该元素没有“父”作为父元素的类:
<div>
<div class= "parent">
<div class="child">
Not to be selected
</div>
</div>
<div>
<div class="child">
To be selected
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我试图通过量角器中的 xpath 返回它
xpath ×10
python ×3
css ×2
html ×2
webdriver ×2
c# ×1
element ×1
javascript ×1
linq ×1
linq-to-xml ×1
namespaces ×1
osb ×1
php ×1
protractor ×1
selenium ×1
web-scraping ×1
xml ×1
xmlreader ×1
xquery ×1
xslt ×1