如果你是一个新手并且你想创建一个用于数据提取的网络爬虫,那么我会推荐selenium但是,selenium webdriver 比scrapy慢(一个用于编码网络爬虫的 python 框架)
正如您被建议使用 selenium 一样,我将只关注使用 python 的 selenium。
对于您的第一个问题:“如何从该站点获取此类信息”
假设您要从中提取数据的网站是www.fundsupermart.co.in(选择此以显示如何处理新窗口弹出窗口)
使用 selenium,您可以通过以下方式进行爬网:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://www.fundsupermart.co.in/main/fundinfo/mutualfund-AXIS-BANKING-DEBT-FUND--GROWTH-AXS0077.html')
这将打开 Firefox 浏览器 webdriver 并加载get()
方法中提供的链接的页面
现在假设如果你想提取一个表,那么你可以通过使用 selenium 提供的函数使用它的 tag_name、xpath 或 class_name 来提取。如果我想在“投资目标”下提取表格,就像这里一样:
然后为此我将:
right click -> inspect element -> find the appropriate tag from console -> right click -> copy xpath
在这里,我发现该<tbody>
标签是我可以从中提取表格的标签,因此我右键单击该标签并单击复制 xpath,因此我得到了该标签的 xpath,即:
xpath=/html/body/table/tbody/tr[2]/td/table/tbody/tr[3]/td/table[2]/tbody/tr/td/table/tbody/tr[1]/td/font/table/tbody/tr[1]/td/table/tbody/tr[5]/td/table/tbody
然后,在代码中添加这一行:
driver.find_element_by_xpath(xpath).text
同样,您可以从任何网站提取其他数据,也可以在此处查看 selenium 的文档
对于您的第二个问题:“如何在此附加窗口中抓取信息?”
要单击链接,您可以使用click()
selenium 提供的功能。假设我想在这里单击链接:Click here for price history
然后我将获取 xpath(如前所述)并添加行:
driver.find_element_by_xpath(xpath).click()
我会像这样打开一个新窗口:
现在要从新窗口中提取数据,您必须切换到新窗口,您可以通过添加以下行来完成:
windows = driver.window_handles
driver.switch_to_window(windows[1])
现在,通过这样做,我已将 webdriver 切换到新窗口,现在我可以像之前一样提取数据并关闭此窗口并切换回原始窗口,只需添加:
driver.close()
driver.switch_to_window(windows[0])
这是使用 selenium 的网络爬虫的一种非常基本和幼稚的方法。这里给出的教程非常好,对你有很大帮助。