有人能告诉我为什么下面的代码不返回表情符号属性吗...
from selenium.webdriver import Chrome
import time
from selenium.common.exceptions import NoSuchElementException
import re
# open webpage and allow time to load entirely
driver = Chrome()
driver.implicitly_wait(15)
driver.get("https://twitter.com")
time.sleep(2)
# start scraping tweets
tickerOptDetails = []
tweet_ids = set()
tweet_ids.clear()
print(tweet_ids)
def main():
# prevent computer from going to sleep
pyautogui.press('shift')
print("--checking for new alert...")
page_cards = driver.find_elements_by_xpath('//article[@data-testid="tweet"]')
for card in page_cards:
try:
ticker = card.find_element_by_xpath('//span/a[starts-with(text(),"$")]').text.replace('$', '')
optCriteria = card.find_element_by_xpath('//span/a[starts-with(text(),"$")]'
'/../following-sibling::span').text.split('\n')[0]\
.replace('-', '').replace('$', '')
emoji = card.find_element_by_xpath("//img[contains(@src,'https://abs-0.twimg.com/emoji/v2/svg/1f402.svg')"
" or contains(@src,'https://abs-0.twimg.com/emoji/v2/svg/1f43b.svg')]")\
.get_attribute("title")
tradeCriteria = str(ticker+optCriteria)
except NoSuchElementException:
continue
if tradeCriteria:
tweet_id = ' '.join(tradeCriteria)
if tweet_id not in tweet_ids:
tweet_ids.add(tweet_id)
if 13 < len(tradeCriteria) < 22 and re.search(r'\d{8} \D ', tradeCriteria):
print(tradeCriteria)
print(emoji)
main()
但是下面的代码将返回一个表情符号属性...
from selenium.webdriver import Chrome
import time
from selenium.common.exceptions import NoSuchElementException
import re
# open webpage and allow time to load entirely
driver = Chrome()
driver.get("https://twitter.com")
time.sleep(2)
# start scraping tweets
tickerOptDetails = []
emojiSet = []
tweet_ids = set()
last_position = driver.execute_script("return window.pageYOffset;")
scrolling = True
tweet_ids.clear()
print(tweet_ids)
page_cards = driver.find_elements_by_xpath('//article[@data-testid="tweet"]')
while scrolling:
page_cards = driver.find_elements_by_xpath('//article[@data-testid="tweet"]')
for card in page_cards:
try:
ticker = card.find_element_by_xpath('//span/a[starts-with(text(),"$")]').text.replace('$', '')
optCriteria = card.find_element_by_xpath('//span/a[starts-with(text(),"$")]'
'/../following-sibling::span').text.split('\n')[0].replace('-', '').replace('$', '')
emoji = card.find_element_by_xpath("//img[contains(@src,'https://abs-0.twimg.com/emoji/v2/svg/1f402.svg') or"
" contains(@src,'https://abs-0.twimg.com/emoji/v2/svg/1f43b.svg')]")\
.get_attribute("title")
tradeCriteria = str(ticker+optCriteria)
except NoSuchElementException:
continue
if tradeCriteria:
tweet_id = ''.join(tradeCriteria)
if tweet_id not in tweet_ids:
tweet_ids.add(tweet_id)
if 13 < len(tradeCriteria) < 22 and re.search(r'\d{8} \D ', tradeCriteria):
print(tradeCriteria)
print(emoji)
scroll_attempt = 0
while True:
# check scroll position
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
time.sleep(2)
curr_position = driver.execute_script("return window.pageYOffset;")
if last_position == curr_position:
scroll_attempt += 1
if scroll_attempt >= 3:
scrolling = False
break
else:
time.sleep(2)
else:
last_position = curr_position
break
print(tweet_ids)
我知道我已经将滚动添加到第二个代码中,所以它会查看整个页面并返回我要查找的元素。但除此之外,它们或多或少是相同的。我可以每隔几秒钟运行第一个代码,它永远找不到表情符号元素。它会发现代码和optCriteria没有问题,并将它们作为tradeCriteria打印在一起,但即使它在那里,它也永远找不到表情符号属性。
我尝试了隐式等待和显式等待,但都不起作用。我还尝试在if语句if 13中使用emoji xpath行
将代码插入比较检查器后,似乎分别在第 38 行和第 43 行之间缺少空格。
43:tweet_id=''。加入(tradeCriteria)
38:tweet_id=''。加入(Trade Criterias)
当连接时,此空格导致< code>tradeCriteria列表中的每个元素之间有一个空格。
43: 一个 b c
38:abc
看到print(emoji)
语句如何在之后,如果tweet_id不在两个文件的tweet_ids:
中,我认为这种差异是导致第一个文件出现问题的原因。
或者,如果您要从推特抓取数据,则可以尝试使用带有Python包装器(例如Tweepy)的官方推特API,因为它稍微容易一些。您可以在此处了解有关如何执行此操作的更多信息。
我是新来的。如果问题重复,很抱歉,但我没有找到解决方法。 我有一个问题--我无法使用Xpath定位元素,但我使用ID定位器定位它没有问题。见附件截图。这一问题不仅针对这一要素,而且也针对所有要素。看来Xpath根本不起作用。 我正在使用Appium 7.3.0(试用过不同版本),UIAutomator2,方法是在模拟器上设置,Android 8.1功能。 null 此外,我在需要的地方使用了和,因
问题内容: 我正在尝试编写Selenium测试用例,并从Firefox中的Selenium IDE开始。那里的测试工作很好。现在,我想使用Selenium Webdriver自动化该测试,并导出相应的JAVA类。到目前为止,一切都已设置并且运行良好(Internet Explorer窗口正在打开,显示相应的页面)。 但是:Selenium Webdriver找不到元素。我想获得以下元素: 而且我有
Selenium.Common.Exceptions.NosuChelementException:消息:没有这样的元素:找不到元素:
我想从这个网站上提取红色标记的信息。 本站的html文本由以下图片呈现。我要提取的信息再次被红色标记。 问题是我找不到带有class属性“find-元素”的div元素。我的代码看起来像这样 如果有人能帮我,那就太好了。 谢谢。
我试图使用Selenium和Python自动化一些测试。我使用Selenium IDE创建了一个套件,它工作得很好。 我现在试图在Python脚本中重新创建这个套件,但遇到了一个问题。 使用XPATH代替ID 使用隐式等待 使用从IDE导出到Python生成的函数 使用WebDriverWait 以下是IDE中的html定义: 使用隐式等待的Python脚本。所有工作都很好,直到最后一行中的冒犯元
我需要在HTML中找到此元素 我就是这样做的 使用XPATH,由Chrome控制台生成: 使用XPATH,它正在寻找某种正则表达式: 最后使用XPATH,它通过页面精确到我的元素 他们都没有工作。All给出了一个例外 硒。常见的例外情况。InvalidSelectorException:Message:u'由于以下错误,给定的选择器无法找到具有xpath表达式的元素:\n语法错误:表达式不是合法表