Selenium,从div类中的标签获取文本
我在这个问题上卡了很久。
我正在用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'
谢谢你。
1 个回答
0
你确定在类名为 "text-box" 的 div 里面有一个 <a>
标签吗?
可以直接试试 name_parent.text
。
其次,facebook_parrent
已经是一个 WebElement
了。所以你不需要再用 find_element
,可以直接用 get_attribute('href')
。