Ich kratze die Twitter-Website. (API wird nicht zum Abrufen historischer Daten verwendet.). Kleinere Bereiche werden früher angezeigt, aber wenn Sie einen größeren Bereich erstellen, müssen Sie viel Zeit aufwenden.Gibt es eine Möglichkeit, Web-Scraping mit Selen zu beschleunigen?
Außerdem gibt es einen Fehler, dass die Verbindung nach einer langen Zeit gestoppt wird.
Also meine Frage ist, gibt es eine Möglichkeit, Web-Scraping mit Selenium zu beschleunigen? Oder muss ich meinen Code ändern?
#python3
import requests
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
browser = webdriver.PhantomJS('C:\phantomjs-2.1.1-windows/bin/phantomjs')
url =u'https://twitter.com/search?f=tweets&vertical=default&q=%EC%84%B8%EC%9B%94%ED%98%B8%20since%3A2014-04-16%20until%3A2014-04-17&src=typd&lang=ko'
browser.get(url)
time.sleep(1)
body = browser.find_element_by_tag_name('body')
for _ in range(10000):
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(0.1)
tweets=browser.find_elements_by_class_name('tweet-text')
wfile = open("140416.txt", mode='w', encoding='utf8')
data={}
i = 1
for i, tweet in enumerate(tweets):
data['text'] = tweet.text
print(i, ":", data)
wfile.write(str(data) +'\n')
i += 1
wfile.close()
Ihr Skript schläft für 100 ms x 10000 mal = 1000 s = ca. 17 min. Wenn Sie also Ihren Code so ändern: '# time.sleep (0.1)' wird Ihr Skript um 17 Minuten schneller machen. –
Sie können auch die .findAll-Datei von BeautifulSoup verwenden, um die Tweets zu erfassen (z. B. driver.page_source). Bs4 ist nicht die Lichtgeschwindigkeit, aber immer noch viel schneller beim Analysieren von HTML als Selen. – jlaur
@jlaur Mit BeautifulSoup, werden Sie nicht nur zwanzig Tweets bringen? Ich muss mehrere Tweets mitbringen, Wissen Sie, wie man mehrere Tweets mit BeautifulSoup importiert? Wenn es dir nichts ausmacht, kannst du mir beibringen? – jiji