用Python在Selenium中进行Web抓取-通过xpath或id查找元素返回空列表

时间:2018-12-05 07:19:39

标签: python selenium web-scraping beautifulsoup

因此,我试图从Google Analytics(分析)的“用户资源管理器”页面中抓取电子邮件地址列表。

其中

I obtained the x-path via here

该商品的X路径为//*[@id="ID-explorer-table-dataTable-key-0-0"]/div

但是不管我怎么做:

driver.find_elements_by_xpath(`//*[@id="ID-explorer-table-dataTable-key-0-0"]/div`)

driver.find_elements_by_xpath('//*[@id="ID-reportContainer"]')

driver.find_elements_by_id(r"ID-explorer-table-dataTable-key-0-0")

它返回一个空列表。

谁能告诉我我哪里出问题了?

我也尝试使用:

html = driver.page_source

但是我当然也找不到电子邮件列表。

我还在想,如果这行不通,是否有一种方法可以自动控制+ a并将所有显示的文本复制到Python中的字符串中,然后使用re.findall()查找电子邮件地址? / p>

2 个答案:

答案 0 :(得分:0)

电子邮件= driver.find_element_by_xpath(//*[@id="ID-explorer-table-dataTable-key-0-0"]/div

print(“ email”,email.get_attribute(“ innerHTML”))

答案 1 :(得分:0)

感谢@Guy的帮助!

这与iframe有关,并且可以正常工作并检测到我需要的物品属于哪个框架:

iframelist=driver.find_elements_by_tag_name('iframe')
for i in range(len(iframelist)):
    driver.switch_to.frame(iframelist[i])
    if len(driver.find_elements_by_xpath('//*[@id="ID-explorer-table-dataTable-key-0-0"]/div'))!=0:
        print('it is item {}'.format(i))
        break
    else:
        driver.switch_to.default_content()