我被这个问题困扰了很长一段时间。
所以我使用 Selenium 进行网页抓取,并且陷入了从 html 中提取文本的困境。我尝试查看有关该主题的其他答案,但它们不起作用。
这是我的代码片段:
# Extract listing links
product_elements = soup.find_all('div', class_='professional-box') # find all div element
product_link = []
for product_element in product_elements: #for loop iterating a list of elements
content = product_element.find('div', class_='text-box type-a')
if content:
link = content.find('a').get('href') #get link
product_link.append({'link':link}) #append "link" dict with value from link variable in product_link list
#Visit all listing links and scrape the data
product_info = []
for product in product_link: #for loop iterating a list of one dict [{"link"}]
driver.get(product['link']) # get from the dict [{"link"}]
button = driver.find_elements(By.CLASS_NAME, "text-box left-pad-25") #click all the detail buttons
for btn in button:
btn.click()
if product:
name_parent = driver.find_element(By.CLASS_NAME,'text-box') #get name
name = name_parent.find('a').text
facebook_parent = driver.find_element(By.CLASS_NAME,'left-facebook phone-number').get('href')
facebook = facebook_parent.find_element(By.TAG_NAME,'a').get('href')
有问题的部分在“if Product:”之后, 特别是在“name_parent.find”上。我还尝试了“facebook_parent.find_element”和“driver.find_element(By.XPATH,“//div[@class='text-box']/p”).getText()”,但都不起作用
我想从此源代码中提取文本:
<div class="text-box">
<p>Lingga Studio</p>
</div>
name_parent.find 的回溯是:
File "c:\Users\user\Desktop\Code\Archify.py", line 51, in <module>
name = name_parent.find('a').text
^^^^^^^^^^^^^^^^
AttributeError: 'WebElement' object has no attribute 'find'
facebook_parent.find_element 的回溯是:
return self._execute(Command.FIND_CHILD_ELEMENT, {"using": by, "value": value})["value"]
driver.find_element(By.XPATH, "//div[@class='text-box']/p").getText() 的回溯是:
AttributeError: 'WebElement' object has no attribute 'getText'
谢谢你
您确定 div 类“文本框”内的
标记有一个锚标记吗? 直接尝试使用 name_parent.text
其次,facebook_parrent已经是一个WebElement了,所以你不需要再使用find_element,你可以直接使用get_attribute('href')