-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
46 lines (36 loc) · 1.4 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import time
import csv
import pandas as pd
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.common.by import By
# Hadless chrome browser setup
chrome_options = Options()
chrome_options.add_argument('--incognito')
chrome_options.add_argument("--headless")
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://twitter.com/search?q=lang%3Aar")
tweets = []
def close():
dict = {'tweet': tweets}
df = pd.DataFrame(dict).drop_duplicates()
df.to_csv('tweets.csv', index=False, encoding='utf-8', mode='a', header=False)
driver.close()
try:
while True:
# Scrolling
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(10) # sleep_between_interactions
# First scope of search by Elements
tweetscope = driver.find_elements(By.TAG_NAME, "article")
# Looping inside the Element to extract Arabic text
for items in tweetscope:
tweet = driver.find_element(By.XPATH, "//div[@lang='ar']").text
tweets.append(tweet)
# User can interupt the program
except KeyboardInterrupt:
close()