我无法共享页面,但这是我想要访问的示例html代码
<tr ng-repeat="record in records | orderBy: query.fullname" ng-click="create_dialog(record)" class="hand_cursor ng-scope" title="View Details" style="">
<td class="ng-binding">96685</td>
<td class="ng-binding">Alvarado, Jacqueline C.</td>
<td class="ng-binding">Nov 6, 2017</td>
<td align="right" class="ng-binding">A1054</td>
<td align="right" class="ng-binding">A1054 - A1054</td>
<td align="right" class="ng-binding">87004000</td>
</tr>
<tr ng-repeat="record in records | orderBy: query.fullname" ng-click="create_dialog(record)" class="hand_cursor ng-scope" title="View Details">
<td class="ng-binding">33522</td>
<td class="ng-binding">Bailey, Jacqueline B.</td>
<td class="ng-binding">Jan 16, 1992</td>
<td align="right" class="ng-binding">DL-46</td>
<td align="right" class="ng-binding">DL-46 - DL-46</td>
<td align="right" class="ng-binding">81313001</td>
</tr>
这是我试图运行的代码。尝试做的是访问我定位的第一个tr中的第二个td。我的预期结果应该是第二个td旁边的Name文本
test_words = ['Jacqueline','abercrombie']
test_word = ['STEVEN']
# test_words = ['STEVEN','(',')','-','69807','21490','321']
for i in test_words:
search = self.driver.find_element_by_xpath('//\*@id="page-wrapper"]/div[3]/div/div/div/div/div[3]/tabletoolstrans/div/input')
search.clear()
search.send_keys(i)
search.send_keys(Keys.RETURN)
time.sleep(3)
soup = BeautifulSoup(self.driver.page_source,"html.parser")
for item in soup.findAll("tr", {"class": "hand_cursor ng-scope"})[1]:
for td in item.findAll("td")[1]:
if td == i:
print("Search :"+i+"")
buttons.save_csv(self, "Pass")
else:
print("Fail")
print("jaq")
time.sleep(3)
问题来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这里的问题是item
是一个NavigableString对象,其中包含值\ n
。NavigableString只是页面上的一小段文字,而您可能希望根据您的代码获得td
项目列表。要了解有关NavigableStrings的更多信息,请参见此处:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#navigablestring
我认为这里的问题是在findAll的末尾使用数组符号([0]
)。您正确地获得了所有的tr,然后使用数组表示法仅取一个,然后循环遍历单个tr对象的结果。结果是td
标签和它们之间的换行符。
简而言之,摆脱[0]
;)
我认为结束代码应该是...
test_words = ['Jacqueline','abercrombie']
test_word = ['STEVEN']
for i in test_words:
search = self.driver.find_element_by_xpath('//\*@id="page-wrapper"]/div[3]/div/div/div/div/div[3]/tabletoolstrans/div/input')
search.clear()
search.send_keys(i)
search.send_keys(Keys.RETURN)
time.sleep(3)
soup = BeautifulSoup(self.driver.page_source,"html.parser")
for item in soup.findAll("tr", {"class": "hand_cursor ng-scope"}):
for td in item.findAll("td"):
if td.text == i:
print("Search :"+i+"")
buttons.save_csv(self, "Pass")
else:
print("Fail")
print("jaq")
time.sleep(3)
注意-还在此行中添加了.text以获取标签的内容。
if td.text == i:
回答来源:stackoverflow