gpt4 book ai didi

python - 无法使用 xpath 找到 img 元素

转载 作者:行者123 更新时间:2023-12-05 04:25:00 26 4
gpt4 key购买 nike

谁能告诉我为什么下面的代码不会返回表情符号属性...

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)

我知道我已将滚动添加到第二个代码,因此它会查看整个页面并返回我要查找的元素。但除此之外,它们或多或少是相同的。我可以每隔几秒运行第一个代码,它永远找不到表情符号元素。它会毫无问题地找到 ticker 和 optCriteria,并将它们一起打印为 tradeCriteria,但它永远不会找到 emoji 属性,即使它在那里。

我尝试了隐式等待和显式等待,但都没有用。我还尝试在 if 语句中使用 emoji xpath 行 if 13 < len(tradeCriteria) < 22 and re.search(r'\d{8} \D ', tradeCriteria): ,但这也不起作用。

最佳答案

将您的代码插入比较检查器后,第 38 行和第 43 行之间似乎分别缺少一个空格。

43:tweet_id = ' '.join(tradeCriteria)
38:tweet_id = ''.join(tradeCriteria)

这个空格导致 tradeCriteria 列表中的每个元素在加入时都有一个空格。

43: a b c

38: abc

看到 print(emoji) 语句是如何在 if tweet_id not in tweet_ids: 之后的,我认为这种差异是导致第一个问题的原因文件。

或者,如果您从推特上抓取数据,您可以尝试使用官方 Twitter API使用 python 包装器,例如 Tweepy因为它稍微容易一些。您可以了解有关如何执行此操作的更多信息 here .

关于python - 无法使用 xpath 找到 img 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73379669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com