尝试使用selenium检索文本时出错

2024-09-30 08:15:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个网站(确实是.com)检索文本,但由于某种原因,即使我使用了正确的ID和类,我也无法检索它

这是HTML的外观:

<div id="jobDescriptionText" class="jobsearch-jobDescriptionText">

该网站在不同的时间有不同的类和id,所以我试图通过在try-except块中基于HTML添加不同的id和类来解释它。只有当上面的html行弹出时,我才会遇到获取文本的麻烦。这是代码的一部分:

 try:
   for i in range(14):
   postings=driver.find_elements_by_class_name('result')
 except:
    print('Error in retrieving postings')

 counts=0 
 rate=[]

 for job in postings:

  try:
    result_html = job.get_attribute('innerHTML')
    soup = BeautifulSoup(result_html, 'html.parser')

  except:
    print('Error in retreiving job from postings')

 sleep(randint(10,15))

 while True:

  try: #retreiving text
    try: 
      job.click()
      driver.implicitly_wait(7)
      description0=(driver.find_element_by_id('vjs-content').text)
      counts=counts+1
      break
    except Exception as e:
      job.click()
      driver.implicitly_wait(7)
      description0=(driver.find_element_by_id('vjs-desc').text)
      counts=counts+1
      break
    try:
       job.click()
       driver.implicitly_wait(7)
       description0=(driver.find_element_by_id('jobDescriptionText').text)
       counts=counts+1
       break
    except Exception as e:
        job.click()
        driver.implicitly_wait(7)
        description0=(driver.find_element_by_class('jobsearch-jobDescriptionText').text)
        counts=counts+1
        break
except:
   print("Error in retreiving description for listing")
   break

Tags: textinidbyhtmldriverjobfind
2条回答

当你打电话的时候

driver.find_elements_by_class_name('result')

HTML中没有result类名

<div id="jobDescriptionText" class="jobsearch-jobDescriptionText">

如果result类位于父类上,则需要选择该父类的子元素以在for job in postings中使用,否则将只找到一个“container”元素,该元素没有预期的文本

如果您共享了正确的HTML:

<div id="jobDescriptionText" class="jobsearch-jobDescriptionText">

它没有任何文本

因此,对它们调用.text没有任何意义。而是有一个正确的定位器,在HTML DOM中可以看到其中的文本

相关问题 更多 >

    热门问题