我正在尝试重写someones库来解析一些带有请求的xml。然而,他们以我不习惯的方式使用lxml。我相信它使用正则表达式来查找数据,虽然大多数库提供了工作,但当被解析的站点在列表结构中具有文件ID时,它不起作用。因此我得到了一个页面,我正在寻找一个与href运动员号码相匹配的ID。所以说我想为运动员567377获得身份证。
</div>
</a></div>
<ul class='list-entries'>
<li class='entity-details feed-entry' id='Activity-123120999590'>
<div class='avatar avatar-athlete avatar-default'>
<a class='avatar-content' href='/athletes/567377' >
</a>
</div>
</li>
<li class='entity-details feed-entry' id='Activity-16784940202'>
<div class='avatar avatar-athlete avatar-default'>
<a class='avatar-content' href='/athletes/5252525'>
</a>
</div>
代码:
lst_group_activity = parser.xpath(".//li[substring(@id, 1, 8)='Activity']")
完美地提供所有列表项,但适用于所有活动。我想只有一个与正确运动员相关的人。该库使用以下内容来使用@href来选择合适的运动员。
lst_athlethe_act_in_group_activity = parser.xpath(".//li[substring(@id, 1, 8)='Activity']/*[@href='/athletes/"+athlethe_id+"']/..")
然而,这似乎永远不会奏效。它找到了活动,然后将它们扔掉了。
有没有更好的方法让这个工作?任何教程都可以指出我正确的方向与下一个元素相关联。
答案 0 :(得分:0)
具有href
属性的元素不是li
元素的immedite子元素,因此您的xpath失败。你匹配:
.//li/*[@href="..."]
你想:
.//li/div/a[@href="..."]
(如果您认为其他元素可能包含*
属性,则可以匹配a
而不是href
,如果您认为路径为.//li//a[@href="..."]
,则可以与a
匹配li/div/a
元素可能并不总是li
)。
所以要找到parser.xpath(".//li[substring(@id, 1, 8)='Activity']/div/a[@href='/athletes/%s']/../.." % '5252525')
元素:
../..
但是你也可以在没有parser.xpath(".//li[substring(@id, 1, 8)='Activity' and div/a/@href='/athletes/%s']" % '5252525')
:
import java.sql.* ;
String URL = "jdbc:sqlserver:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS)
PreparedStatement pstmt = null;
String SQL = "dbo.sp_add_operator @name = N'Dan Wilson',
@enabled = 1,
@email_address = N'danwi',
@pager_address = N'5551290AW@pager.Adventure-Works.com',
@weekday_pager_start_time = 080000,
@weekday_pager_end_time = 170000,
@pager_days = 62 ; ";
pstmt = conn.prepareStatement(SQL);
stmt.executeUpdate(); or stmt.executeQuery();