使用 Python 和 Selenium 按标签获取多个元素
Posted
技术标签:
【中文标题】使用 Python 和 Selenium 按标签获取多个元素【英文标题】:Get multiple elements by tag with Python and Selenium 【发布时间】:2021-05-17 22:04:24 【问题描述】:我的代码进入一个网站,并抓取信息行(标题和时间)。
但是有一个标签('p')我不知道如何使用'get element by'。
在网站上,就是每个标题下的信息。
这是我目前的代码
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
driver = webdriver.Chrome()
driver.get('https://www.nutritioncare.org/ASPEN21Schedule/#tab03_19')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
eachRow = driver.find_elements_by_class_name('timeline__item')
time.sleep(1)
for item in eachRow:
time.sleep(1)
title=item.find_element_by_class_name('timeline__item-title')
tim=item.find_element_by_class_name('timeline__item-time')
tex=item.find_element_by_tag_name('p') # this is the part i dont know how to scrape
print(title.text,tim.text,tex.text)
【问题讨论】:
【参考方案1】:我检查了页面并且有几个 p 标签,我建议使用 find_elements_by_tag_name 而不是 find_element_by_tag_name
(获取所有 p 标签,包括您想要的 p 标签)并遍历所有 p 标签元素和然后加入文字内容并在上面做strip。
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import requests
driver = webdriver.Chrome()
driver.get('https://www.nutritioncare.org/ASPEN21Schedule/#tab03_19')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
eachRow = driver.find_elements_by_class_name('timeline__item')
time.sleep(1)
for item in eachRow:
time.sleep(1)
title=item.find_element_by_class_name('timeline__item-title')
tim=item.find_element_by_class_name('timeline__item-time')
tex=item.find_elements_by_tag_name('p')
text = " ".join([i.text for i in tex]).strip()
print(title.text,tim.text, text)
【讨论】:
【参考方案2】:由于网页有多个p
标签,最好使用.find_elements_by_class()
方法。将代码中的print
调用替换为以下内容:
print(title.text,tim.text)
for t in tex:
if t.text == '':
continue
print(t.text)
【讨论】:
【参考方案3】:也许可以尝试使用不同的 find_elements_by_class...我不太会使用 python,但除非你已经拥有,否则试试这个。
【讨论】:
不幸的是p标签没有类名 “p”代表什么? 段落,不确定它是否被认为是标签或 css 选择器等 id 知道,因为标签名称应该可以工作,但如果不是,我想我不能帮助抱歉 除非 xpath。 (//p[text() = 'JBL']) 有效以上是关于使用 Python 和 Selenium 按标签获取多个元素的主要内容,如果未能解决你的问题,请参考以下文章
python下用selenium的webdriver包如何在执行完点击下一页后没有获得下一页新打开页面的html源代码
Python+Selenium+PhantomJs爬虫 怎么抓取弹出新标签页的内容
python下用selenium的webdriver包如何在执行完点击下一页后获得下一页新打开页面的html源代码呢?