我正在尝试使用以下代码获取喜欢该帖子的人数。我尝试了两种方法都不起作用。它确实返回错误代码。
有人可以帮助,对此表示感谢。
源代码: https://m.facebook.com/ufi/reaction/profile/browser/?ft_ent_identifier=3647203655325514
def get_likes(self):
return self.driver.find_element_by_xpath('//span[@data-store="{"reactionType":1}"]/span/span').get_attribute("innerHTML")
def get_likes(self):
return self.driver.find_element_by_xpath('//span[@data-store="{\"reactionType\":1}"]/span/span').get_attribute("innerHTML")
语法错误:无法对“文档”执行“评估”:字符串'//span [@ data-store =“{” reactionType“:1}”]/span/span'不是有效的XPath表达式。
最佳答案
还尝试以不同的方式进行转义,但结果相同-似乎xpath与html中的"
有问题,意味着它们已关闭,因此driver.find_element_by_xpath('//span[@id="u_0_r"]').get_attribute('data-store')
仅检测开头{
父div
的ID是自动生成的,其图标的位置按点击次数排序。
您可以使用class
标记的i
,直到找到一个更好的解决方案为止,这确实会让我感兴趣:
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'C:\Program Files\ChromeDriver\chromedriver.exe')
html_content = '''
<div class="scrollAreaColumn">
<span name="one" data-store="{"reactionType":1}">
<span>133</span>
</span>
<span name="two" data-store="{"reactionType":1}">
<i class="_2ep2 img sp_FnpQQMXWL5W sx_4760b1"></i>
<span>128</span>
</span>
<span name="three" data-store="{"reactionType":1}">
<i class="_2ep2 img sp_FnpQQMXWL5W sx_4760b1 xyz"></i>
<span>128</span>
</span>
</div>
'''
driver.get("data:text/html;charset=utf-8,{html_content}".format(html_content=html_content))
count = driver.find_element_by_xpath('//i[@class="_2ep2 img sp_FnpQQMXWL5W sx_4760b1"]/following-sibling::span').text
print(count)
driver.close()
关于python - Facebook Selenium如何获得喜欢的人数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65214497/