HTML div类,其中包含我希望打印的数据
<div class="gs_a">LR Binford - American antiquity, 1980 - cambridge.org </div>
这是我目前的代码:
from selenium import webdriver
def Author (SearchVar):
driver = webdriver.Chrome("/Users/tutau/Downloads/chromedriver")
driver.get ("https://scholar.google.com/")
SearchBox = driver.find_element_by_id ("gs_hdr_tsi")
SearchBox.send_keys(SearchVar)
SearchBox.submit()
At = driver.find_elements_by_css_selector ('#gs_res_ccl_mid > div:nth-child(1) > div.gs_ri > div.gs_a')
print (At)
Author("dog")
我打印出来的都是
硒。网络驱动程序。遥远的webelement。WebElement(session=“9aa956e2bd51f510dd626f6937b01c0e”,element=“0.6506218589958-1”)
我对selenium的帮助并不陌生
您正在打印元素。打印(At.text)而不是At。
简介
首先,我建议css使用更快的解析器在selenium的页面_source
上选择目标。
import lxml
import lxml.html
# put this below SearchBox.submit()
CSS_SELECTOR = '#gs_res_ccl_mid > :nth-child(1) > .gs_ri > .gs_a' # Define css
source = driver.page_source # Get all html
At_raw = lxml.html.document_fromstring(source) # Convert
At = At_raw.cssselect(CSS_SELECTOR) # Select by CSS
解决方案1
然后,您需要从Web元素中提取text_content()
并对其进行正确编码。
At = At.text_content().encode('utf-8') # Get text and encode
print At
解决方案2
如果at
包含多行和Unicode,您还可以删除以下内容:
At = [l.replace(r'[^\x00-\x7F]+','') for line in At \ # replace unicode
for l in line.text_content().strip().encode('utf-8').splitlines() \ # Get text
if l.strip()] # only consider if line contains characters
print At
看来你就快到了。也许,根据您共享的HTML和代码测试,您看到了所需的输出。
一旦执行了以下代码行:
At = driver.find_elements_by_css_selector ('#gs_res_ccl_mid > div:nth-child(1) > div.gs_ri > div.gs_a')
WebElement At指的是所需的元素(列表中的单个元素)。在下一步中,当您调用print(At)
时,将打印位于的WebElement,如下所示:
selenium.webdriver.remote.webelement.WebElement (session="9aa956e2bd51f510dd626f6937b01c0e", element="0.6506218589189958-1")
现在,根据你的问题,如果你想提取文本LR Binford
text
:获取元素的文本。 get_attribute(属性名)
:获取元素的给定属性或属性。因此,您需要将代码行更改为:
print (At)
以下任何一项:
>
print(At.text)
使用get_属性(attributeName)
:
print(At.get_attribute("innerHTML"))
您自己的代码稍作调整:
# -*- coding: UTF-8 -*-
from selenium import webdriver
def Author (SearchVar):
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument('disable-infobars')
driver=webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get ("https://scholar.google.com/")
SearchBox = driver.find_element_by_name("q")
SearchBox.send_keys(SearchVar)
SearchBox.submit()
At = driver.find_elements_by_css_selector ('#gs_res_ccl_mid > div:nth-child(1) > div.gs_ri > div.gs_a')
for item in At:
print(item.text)
Author("dog")
控制台输出:
…, RJ Marles, LS Pellicore, GI Giancaspro, TL Dog - Drug Safety, 2008 - Springer
我想从Page_inspect得到课文课的价格。 使用driver.find_element_by_xpath和 Web 驱动程序等待。 结果未找到 : 回溯(最后一次调用):文件“D:\project\totempop\webscraping\asrPOP.py”,第22行,rateText=WebDriverWait(driver,10)。直到(EC.presence_of_all_eleme
当我执行时,它也打印和,我如何在Python中使用selenium只获取示例文本?
问题内容: 我正在尝试使用Selenium WebDriver获取文本,这是我的代码。请注意,我不想使用XPath,因为在我的情况下,每次重新启动网页时ID都会更改。 我的代码: HTML: 我怎样才能解决这个问题? 问题答案: 你只想。 然后,您可以在验证 后 进行验证,不要尝试传递您 期望的 内容。
我试图使用Selenium WebDriver获取文本,这是我的代码。请注意,我不想使用XPath,因为在我的情况下,每次重新启动网页时都会更改ID。 我的代码: HTML: 我怎样才能解决这个问题?
问题内容: 我有以下HTML页面。我想获取特定div中的所有链接。这是我的HTML代码: 我想获取div 中存在的所有链接。所以我想要的那些链接是 这是我尝试过的Python代码 如何在Python上使用Selenium获得这些链接? 问题答案: 按照您共享的HTML来获取div 上所有链接的列表,您可以使用以下代码块: 注意 :由于您需要从 div 标记中收集所有 href 属性,因此您无需使用
我正在尝试创建一个机器人,在各种TikTok帖子上留下评论,其中一些帖子需要留下一个提及,例如用户名。问题是,TikTok的注释框是一个div元素,而不是一个input元素。 首先,我知道这个StackOverflow帖子,对一些人来说,它只是说使用javascript更新div值。问题是,如果编辑代码,它将不会显示用户名下拉菜单 “用户名下拉菜单”是什么? 这是一个小菜单,上面有你想要提及的用户