使用Selenium进行网络抓取。让它登录到一个站点,该站点一次返回具有五个值的HTML数据表。我将让Selenium从表中抓取特定数据,写入文件,单击“下一步”,然后重复下五个。
新的自动化脚本。我的get_attribute,find_elements_by_class_name等种类繁多,例如:
pnum = prtnames.get_attribute("title")
for x in prtnames:
print('pnum')
以下是返回值之一的HTML:
<div class="text-container prtname"><span class="PrtName" title="P011">P011</span></div>
我需要获取“ P011”值。显然,Selenium没有“ find_elements_by_title”,并且该值没有HTML ID。该行HTML的Xpath为:
//*[@id="printerConnectTable"]/tbody/tr[5]/td/table/tbody/tr[1]/td[2]/div/span
但是我在该Xpath中看不到“ title”或“ P011”的引用。
pnum = prtnames.get_attribute("title")
AttributeError: 'list' object has no attribute 'get_attribute'
就像get_attribute不存在一样,但是上面有一些(尽管不是很多)文档。
从根本上讲,我想获取“ P011”值并打印到控制台,然后我知道Selenium正在使用正确的数据。
P.S。所有这些我都是自学成才的,我正在自动执行sysadmin任务。
答案 0 :(得分:1)
我认为问题在于prtnames是元素列表,而不是特定元素。如果想要将标题属性的列表用作prtnames列表,则可以使用列表推导。
pnums = [x.get_attribute('title') for x in prtnames]