硒:get_attribute returns None
Selenium: get_attribute returns None
我想抓取 某些网页中 <div>
标签内的所有 link。例如,一段 HTML-code 看起来像这样:
<div class="item_text">
<a href="https://perm.aif.ru/culture/details/edinstvennyy_v_rossii_v_solikamske_otkrylsya_novyy_korporativnyy_muzey">
<h3>Единственный в России. В Соликамске открылся новый корпоративный музей</h3>
</a>
</div>
我想得到link:https://perm.aif.ru/culture/details/edinstvennyy_v_rossii_v_solikamske_otkrylsya_novyy_korporativnyy_muzey
所以我使用 问答来编写这段代码:
from selenium import webdriver
driver = webdriver.Firefox()
link = "https://perm.aif.ru/"
driver.get(link)
elems = driver.find_elements_by_class_name("item_text")
links = [elem.get_attribute('href') for elem in elems]
print(links)
但它 return 给我带来了这个:
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
这不是我期望看到的。我该如何解决?为什么此代码 return 列在 None 上?
我用这个:
- Ubuntu 20.04
- Python 3.8.5
- 硒 3.141.0
链接包含在 a
个元素中,这些元素包含在 div
个名称为 class 的元素 item_text
中,而不是直接包含在这些 divs
中。
你可以这样做:
from selenium import webdriver
import time
driver = webdriver.Firefox()
link = "https://perm.aif.ru/"
driver.get(link)
time.sleep(10)
elems = driver.find_elements_by_css_selector(".item_text a")
links = [elem.get_attribute('href') for elem in elems]
print(links)
我还添加了睡眠以确保在我们获取链接之前加载页面
我想抓取 某些网页中 <div>
标签内的所有 link。例如,一段 HTML-code 看起来像这样:
<div class="item_text">
<a href="https://perm.aif.ru/culture/details/edinstvennyy_v_rossii_v_solikamske_otkrylsya_novyy_korporativnyy_muzey">
<h3>Единственный в России. В Соликамске открылся новый корпоративный музей</h3>
</a>
</div>
我想得到link:https://perm.aif.ru/culture/details/edinstvennyy_v_rossii_v_solikamske_otkrylsya_novyy_korporativnyy_muzey
所以我使用
from selenium import webdriver
driver = webdriver.Firefox()
link = "https://perm.aif.ru/"
driver.get(link)
elems = driver.find_elements_by_class_name("item_text")
links = [elem.get_attribute('href') for elem in elems]
print(links)
但它 return 给我带来了这个:
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
这不是我期望看到的。我该如何解决?为什么此代码 return 列在 None 上?
我用这个:
- Ubuntu 20.04
- Python 3.8.5
- 硒 3.141.0
链接包含在 a
个元素中,这些元素包含在 div
个名称为 class 的元素 item_text
中,而不是直接包含在这些 divs
中。
你可以这样做:
from selenium import webdriver
import time
driver = webdriver.Firefox()
link = "https://perm.aif.ru/"
driver.get(link)
time.sleep(10)
elems = driver.find_elements_by_css_selector(".item_text a")
links = [elem.get_attribute('href') for elem in elems]
print(links)
我还添加了睡眠以确保在我们获取链接之前加载页面