Python 抓取动态信息
我最近开始编写代码,我使用Python和Pycharm。我安装并导入了所需的“附加组件”,如Selenium。Python 抓取动态信息,python,selenium,xpath,web-scraping,css-selectors,Python,Selenium,Xpath,Web Scraping,Css Selectors,我最近开始编写代码,我使用Python和Pycharm。我安装并导入了所需的“附加组件”,如Selenium。 在我的第一个项目中,我尝试从这个网站获取“地址”信息: https://randomstreetview.com/#fullscreen 当我使用Chrome开发者工具(F12)时,信息显示在div'address'之后。经过多次尝试和错误,我设法以多种方式浏览网站,但在div后面什么也没有出现。 因此,我查了一下,认为这是一个动态信息,所以我开始尝试使用Selenium和我在网上
在我的第一个项目中,我尝试从这个网站获取“地址”信息:
https://randomstreetview.com/#fullscreen
当我使用Chrome开发者工具(F12)时,信息显示在div'address'之后。经过多次尝试和错误,我设法以多种方式浏览网站,但在div后面什么也没有出现。
因此,我查了一下,认为这是一个动态信息,所以我开始尝试使用Selenium和我在网上找到的其他代码。
什么都没用,或者我没能让它工作。
每次打开网站时,地址都会更改,但位置保持不变(afaik)。
有人能帮我写一个工作代码或者帮我走上正确的道路吗
我可以提供不同的方法,但我认为这不会有帮助。如果您想要元素的地址,只需获取元素并打印它的文本即可
driver.get("https://randomstreetview.com/")
wait = WebDriverWait(driver, 10)
elem = wait.until(EC.presence_of_element_located((By.ID, "address")))
print(elem.text)
元素
<div id="address">Nordre Ringvej 97, 2600 Glostrup, Dänemark</div>
进口
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
依靠阿伦德普·乔汉的回答。无法获取地址的原因是它是一个隐藏元素 看看这篇文章 TLDR;“text属性允许您仅从可见元素获取文本,而textContent属性也允许获取隐藏元素的文本…” 此代码还可以使用CSS选择器工作
element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div#address')))
print(element.get_attribute('textContent'))
要打印文本值
,可以使用以下任一选项:
- 使用
和id
:get\u属性(“textContent”)
- 使用
和css\u选择器
:get\u属性(“innerHTML”)
- 使用
和文本属性:xpath
driver.get("https://randomstreetview.com/#fullscreen") print(driver.find_element_by_xpath("//div[@id='address']").text)
print(WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div#address"))).text)
理想情况下,您需要诱导元素located()的存在,并且您可以使用以下任一项:
- 使用
和ID
:get\u属性(“textContent”)
- 使用
和文本属性:CSS\u选择器
driver.get("https://randomstreetview.com/#fullscreen") print(driver.find_element_by_xpath("//div[@id='address']").text)
print(WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div#address"))).text)
- 使用
和XPATH
:get\u attribute()
- 控制台输出:
value
Ciudad Pérdida 10, La Sabana, 39799 Acapulco, Guerrero, Mexico
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 控制台输出:
value
Ciudad Pérdida 10, La Sabana, 39799 Acapulco, Guerrero, Mexico
工具书类 链接到有用的文档:
- 方法
获取元素的给定属性或属性。
- 属性返回元素的文本。
Ciudad Pérdida 10, La Sabana, 39799 Acapulco, Guerrero, Mexico