получить значение атрибута, используя Selenium Python - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь получить свойство твита "data-reply-to-users-json". но, кажется, не работает, любое предложение? Я поставил свой код и HTML-структуру твиттера. * ps: поиск в Твиттере с использованием js при загрузке еще одного твита

Структура Twitter

Вот что я уже пробовал в питоне

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"))

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Вам будет гораздо лучше использовать библиотеку, например BeautifulSoup, для этой задачи.

Но если вы должны использовать селен, вам нужна функция 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)
0 голосов
/ 08 ноября 2018

Альтернативой может быть использование Tweepy . Это просто в использовании. Вам нужен аккаунт в твиттере. Создайте запрос приложения, получите ключ доступа и идентификатор (это может занять некоторое время). Это более законный способ сделать это. И второй селен медлен для сбора данных в твиттере.

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...