【问题标题】:get value of atribute using Selenium python使用 Selenium python 获取属性值
【发布时间】:2018-11-08 02:02:46
【问题描述】:

我正在尝试获取推文“data-reply-to-users-json”的属性。但它似乎不起作用,有什么建议吗?我把我的代码和 twitter 的 html 结构。 *ps:加载更多推文时使用js进行推特搜索

Twitter Structure

以下是我已经在 python 中尝试过的内容

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

chrome_path = r"C:\Users\..\Desktop\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("https://twitter.com/search?q=bakar%20para%20cebong&src=typd")
time.sleep(1)

body = driver.find_element_by_tag_name('body')

for _ in range(5):
    body.send_keys(Keys.PAGE_DOWN)
time.sleep(0.2)

time.sleep(1)
tweets = driver.find_elements_by_class_name('original-tweet')

for tweet in tweets:
    print(tweet.get_property("data-tweet-id"))

【问题讨论】:

    标签: python selenium-chromedriver


    【解决方案1】:

    另一种方法是使用Tweepy。它很容易使用。你需要一个推特账号。创建一个应用请求,获取访问密钥和 ID(这可能需要一段时间)。这是一种更合法的方式。第二个硒在 twitter 上抓取数据的速度很慢。

    import tweepy
    
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret) # you will get this once you register for the app
    auth.set_access_token(access_token, access_token_secret) # you will get this once you register for the app
    
    api = tweepy.API(auth)
    
    public_tweets = api.home_timeline()
    for tweet in public_tweets:
        print tweet.text 
    

    【讨论】:

      【解决方案2】:

      使用 BeautifulSoup 之类的库来完成这项任务会更好。

      但如果你必须使用 selenium,那么你需要 get_attribute("attribute name") 函数。

      import time
      from selenium import webdriver
      from selenium.webdriver.common.keys import Keys
      
      chrome_path = r"C:\Users\..\Desktop\chromedriver.exe"
      driver = webdriver.Chrome(chrome_path)
      driver.get("https://twitter.com/search?q=bakar%20para%20cebong&src=typd")
      time.sleep(1)
      
      body = driver.find_element_by_tag_name('body')
      
      for _ in range(5):
          body.send_keys(Keys.PAGE_DOWN)
      time.sleep(0.2)
      
      time.sleep(1)
      tweets = driver.find_elements_by_class_name('original-tweet')
      
      for tweet in tweets:
          tweet_id = tweet.get_property("data-tweet-id")
          reply_to_users_json = tweets.get_attribute("data-reply-to-users-json") # Added this line
          print(some_stuff_like_tweet_id_or_reply_to_users_json)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-12
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 2021-03-01
        • 2019-06-13
        • 2021-11-08
        相关资源
        最近更新 更多