【发布时间】:2020-12-11 08:32:38
【问题描述】:
我已经完成了一个基本的网络抓取机器人的构建,它可以在我想要的网站上执行任务。完成后,我意识到 selenium 解析 Web 数据的速度非常慢,而且较大的任务可能需要几分钟或更长时间才能执行。本质上,我在网站上的基本机器人搜索然后解析不同的文章并记录结果。我的机器人是用 Python 3 编写的,它导入了 selenium webdriver。任务的范围包括单击搜索栏、输入内容、输入、然后查找热门文章并记录它们。我想将其推进到与文章互动和与文章作者交流,每个任务联系 5-10 人。我在 theverge.com 上做过,但这只是一个测试网站,不是真正的交易。
我听说过向 URL 发送 GET 请求并向 URL 添加搜索查询,然后解析响应。但是,我不确定如何做到这一点,任何对此的参考都会很好地让我朝着正确的方向前进。我也在考虑将 Node 用于繁重的 JavaScript 网站,并使用 puppeteer 来加载和解析动态网页。
感谢任何可以为我指明正确方向的提示或建议
我的代码供参考除外
driver.get("https://www.theverge.com/")
print(driver.title)
search_button = driver.find_elements_by_id("icon-search")
search = driver.find_element_by_name("q")
search.send_keys("facebook")
search.send_keys(Keys.RETURN)
try:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.LINK_TEXT, "Facebook’s old web design will disappear in September")))
element.click()
except:
driver.quit()
【问题讨论】:
-
搜索模块
requests或urllib从服务器获取 HTML 并稍后发送表单数据,模块BeautifulSoup或lxml解析 HTML 并搜索 HTML 中的数据。但这不会运行 JavaScript,如果您有带有 JavaScript 的页面,那么您仍然可能需要Selenium但您可以尝试在不显示窗口的情况下运行 - 在headless模式下。
标签: python selenium webdriver bots puppeteer