【发布时间】:2020-05-06 15:45:51
【问题描述】:
伙计们,我目前有一个工作脚本,可以从某个页面抓取 ajax 内容...问题是它需要 +- 12 秒才能运行,而出于我的目的,我需要它更快。
有什么建议吗?
from urllib.parse import urlencode
import requests
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
def search_char():
char_name_input = str(input('Search Character: ')) # User input / Character Name
start_time = time.time()
browser = webdriver.PhantomJS()
search_url = 'https://www.tibia.com/community/?subtopic=characters' # URL
r = browser.get(search_url) # Searched Character Page
element = browser.find_element_by_name("name")
element.send_keys(char_name_input)
element2 = browser.find_element_by_name("Submit").click()
page = browser.find_element_by_id('Content')
rendered_page = page.get_attribute('innerHTML')
soup = BeautifulSoup(rendered_page, 'html.parser')
selection = soup.find_all('td')
lista = []
for item in selection:
lista.append(item.get_text())
browser.close()
print("--- %s seconds ---" % (time.time() - start_time))
for i in lista:
print(i,'\n')
search_char()
【问题讨论】:
-
加快网页抓取速度:使用 API。 12 秒对于 UI 自动化的执行来说是一个极好的时间。我经常运行从 1 分钟(最少)到最多 15 分钟的脚本。在页面上呈现浏览器和 HTML 内容需要来自您正在自动化的网站的响应时间——Selenium / Python 实际上是实现 UI 自动化的最快方法。如果您想要更快的速度,请使用
requests。 -
HTMLUnit 可能快一点... cURL 对直接请求很有用。甚至邮递员?
-
@Christine - Selenium / Python 是最快的大胆声明。我想知道你是否尝试过 Puppeteer。
-
我很想试一试!我经常使用 C#,所以增加的速度对我来说是新奇的。
标签: python ajax selenium web-scraping