我正在使用Python从网站上抓取内容。首先,我用BeautifulSoup和MechanizePython的,但我看到,该网站有一个按钮,通过JavaScript创建的内容,所以我决定使用Selenium。
BeautifulSoup
Mechanize
Selenium
假设我可以使用Selenium和诸如之类的方法来查找元素并获取其内容driver.find_element_by_xpath,那么BeautifulSoup当我可以对所有内容都使用Selenium时,有什么理由要使用?
driver.find_element_by_xpath
在这种特殊情况下,我需要使用Selenium来单击JavaScript按钮,以便更好地使用Selenium进行解析还是应该同时使用Selenium和Beautiful Soup?
在直接回答您的问题之前,值得一开始:如果您需要做的就是从静态HTML页面提取内容,则可能应将HTTP库(例如Requests或内置urllib.request)与lxml或BeautifulSoup而不是Selenium(尽管硒可能也足够了)。不需要使用硒的优点:
urllib.request
lxml
requests
请注意,要求cookie起作用的站点并不是破解Selenium的理由- 您可以轻松创建一个URL开启函数,该函数使用cookielib / cookiejar神奇地设置和发送HTTP请求中的cookie。
好吧,那为什么还要考虑使用Selenium?几乎完全可以处理您要爬网的内容是通过JavaScript添加到页面而不是烘焙到HTML中的情况。即使这样,您也可以在不破坏重型机械的情况下获得所需的数据。通常,以下情况之一适用:
如果您 确实 确定使用Selenium的情况值得考虑,请在无头模式下使用它,(至少)Firefox和Chrome驱动程序支持。Web爬虫通常不需要实际图形化显示页面,也不需要使用任何特定于浏览器的怪癖或功能,因此理想的选择是无头浏览器- 它具有较低的CPU和内存成本以及较少的死机或挂起活动部件。