<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Python%3A_Selenium_Login_ke_Twitter</id>
	<title>Python: Selenium Login ke Twitter - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Python%3A_Selenium_Login_ke_Twitter"/>
	<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=Python:_Selenium_Login_ke_Twitter&amp;action=history"/>
	<updated>2026-04-08T16:13:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>https://onnocenter.or.id/wiki/index.php?title=Python:_Selenium_Login_ke_Twitter&amp;diff=46675&amp;oldid=prev</id>
		<title>Onnowpurbo: Created page with &quot;   #!/usr/bin/env python  # -*- coding: UTF-8 -*-    import os  import sys  import codecs  import pprint    import unittest  from selenium import webdriver  from selenium.webd...&quot;</title>
		<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=Python:_Selenium_Login_ke_Twitter&amp;diff=46675&amp;oldid=prev"/>
		<updated>2017-01-27T03:45:47Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;   #!/usr/bin/env python  # -*- coding: UTF-8 -*-    import os  import sys  import codecs  import pprint    import unittest  from selenium import webdriver  from selenium.webd...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 # -*- coding: UTF-8 -*-&lt;br /&gt;
 &lt;br /&gt;
 import os&lt;br /&gt;
 import sys&lt;br /&gt;
 import codecs&lt;br /&gt;
 import pprint&lt;br /&gt;
 &lt;br /&gt;
 import unittest&lt;br /&gt;
 from selenium import webdriver&lt;br /&gt;
 from selenium.webdriver.common.keys import Keys&lt;br /&gt;
 import selenium.webdriver.support.ui as ui&lt;br /&gt;
 &lt;br /&gt;
 import logging&lt;br /&gt;
 logging.basicConfig(level=logging.DEBUG)&lt;br /&gt;
 logger = logging.getLogger(__name__)&lt;br /&gt;
 &lt;br /&gt;
 class PythonOrgSearch(unittest.TestCase):&lt;br /&gt;
 &lt;br /&gt;
  def setUp(self):&lt;br /&gt;
   self.driver = webdriver.Firefox()&lt;br /&gt;
 &lt;br /&gt;
  def test_search_in_python_org(self):&lt;br /&gt;
   driver = self.driver&lt;br /&gt;
   driver.get(&amp;quot;https://twitter.com/&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   driver.maximize_window()&lt;br /&gt;
   &lt;br /&gt;
   username = driver.find_element_by_class_name(&amp;quot;js-username-field&amp;quot;)&lt;br /&gt;
   password = driver.find_element_by_class_name(&amp;quot;js-password-field&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   username.send_keys(&amp;quot;myusername&amp;quot;)&lt;br /&gt;
   password.send_keys(&amp;quot;mypassword&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   wait = ui.WebDriverWait(driver, 5)&lt;br /&gt;
   driver.find_element_by_css_selector(&amp;quot;button.submit.btn.primary-btn&amp;quot;).click()&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
  def tearDown(self):&lt;br /&gt;
   #self.driver.close()&lt;br /&gt;
   print &amp;quot;close?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
  unittest.main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recipe 2&lt;br /&gt;
&lt;br /&gt;
Logon on to twitter with Firefox (headlessly) and scrape followers from a user profile: &lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 # -*- coding: UTF-8 -*-&lt;br /&gt;
 &lt;br /&gt;
 from selenium import webdriver&lt;br /&gt;
 from selenium.webdriver.common.keys import Keys&lt;br /&gt;
 from pyvirtualdisplay import Display&lt;br /&gt;
 &lt;br /&gt;
 def correct_url(url): &lt;br /&gt;
  if not url.startswith(&amp;quot;http://&amp;quot;) and not url.startswith(&amp;quot;https://&amp;quot;):&lt;br /&gt;
   url = &amp;quot;http://&amp;quot; + url&lt;br /&gt;
  return url&lt;br /&gt;
 &lt;br /&gt;
 def scrollDown(browser, numberOfScrollDowns):&lt;br /&gt;
  body = browser.find_element_by_tag_name(&amp;quot;body&amp;quot;)&lt;br /&gt;
  while numberOfScrollDowns &amp;gt;=0:&lt;br /&gt;
   body.send_keys(Keys.PAGE_DOWN)&lt;br /&gt;
   numberOfScrollDowns -= 1&lt;br /&gt;
   if numberOfScrollDowns % 10 == 0:&lt;br /&gt;
    print 'remaining scroll downs ... {}'.format(numberOfScrollDowns)&lt;br /&gt;
  return browser&lt;br /&gt;
 &lt;br /&gt;
 def crawl_url(url, run_headless=True):&lt;br /&gt;
  if run_headless:&lt;br /&gt;
   display = Display(visible=0, size=(1024, 768))&lt;br /&gt;
   display.start()&lt;br /&gt;
 &lt;br /&gt;
  url = correct_url(url)&lt;br /&gt;
  browser = webdriver.Firefox()&lt;br /&gt;
  browser.get(url)&lt;br /&gt;
 &lt;br /&gt;
  username = browser.find_element_by_class_name(&amp;quot;js-username-field&amp;quot;)&lt;br /&gt;
  password = browser.find_element_by_class_name(&amp;quot;js-password-field&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
  username.send_keys(&amp;quot;username&amp;quot;)&lt;br /&gt;
  password.send_keys(&amp;quot;password&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
  browser.find_element_by_css_selector(&amp;quot;button.submit.btn.primary-btn&amp;quot;).click() &lt;br /&gt;
 &lt;br /&gt;
  while True:&lt;br /&gt;
   target_set = set()&lt;br /&gt;
 &lt;br /&gt;
   browser = scrollDown(browser, 500)&lt;br /&gt;
 &lt;br /&gt;
   all_targets = browser.find_elements_by_class_name(&amp;quot;u-linkComplex-target&amp;quot;)&lt;br /&gt;
   for a_target in all_targets:&lt;br /&gt;
    target_set.add(a_target.text) &lt;br /&gt;
 &lt;br /&gt;
   fo = open('followers.dat', 'w')&lt;br /&gt;
   for target in target_set:&lt;br /&gt;
    fo.write(target + '\n')&lt;br /&gt;
   fo.close() &lt;br /&gt;
 &lt;br /&gt;
   print 'wrote {} to file'.format(len(target_set)) &lt;br /&gt;
 &lt;br /&gt;
  browser.quit()&lt;br /&gt;
 &lt;br /&gt;
 if __name__=='__main__':&lt;br /&gt;
  url = &amp;quot;https://twitter.com/username/followers/&amp;quot;&lt;br /&gt;
  crawl_url(url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
    [TidbitsOfProgramming] Crawling Websites that Loads Contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Referensi==&lt;br /&gt;
&lt;br /&gt;
* http://trimc-devops.blogspot.co.id/2016/03/using-python-and-selenium-to-logon-to.html&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>