从 Web 抓取数据并同时执行 api 调用的编程语言

Which programming language to scrape data from web and do api calls at the same time?

本文关键字:api 执行 调用 编程语言 Web 抓取 数据      更新时间:2023-09-26

我的项目处理从没有API的站点抓取大量数据或调用API(如果有)。使用多个线程来提高速度并实时工作。哪种编程语言更好?我对Python很满意。但是,线程是一个问题。因此,考虑在node中使用JS.js。因此,我应该选择哪个?

线程在

python 中是一个问题,只有当你想并行计算多个东西时。如果你只是想做很多请求,解释器的限制(一次只有一个线程解释python)不会成为问题。

事实上,要同时发出大量请求,您甚至不必使用大量线程。您可以使用异步请求库,例如 requests.async。

如果你有一些繁重的计算与请求的结果有关,你总是可以使用多处理在python中并行化它,这使您能够绕过我之前谈到的线程限制。

在python

中,您可以多线程抓取。我过去用过美丽的汤,但也有替代品。

  • 刮擦
  • 机械化
  • lxml

由于我有使用美丽汤的经验,下面是一个非常简单的示例来多处理刮刀

from BeautifulSoup import BeautifulSoup
from multiprocessing import Process, JoinableQueue, cpu_count
jobs = []
queue = JoinableQueue()

class scraperClass(Process):
    def __init__(self,queue):
        Process.__init__(self)
        # Other init things
        
    def run(self):
        # your scraping code here
        # Perhaps save stuff to a DB?
            page = urllib2.urlopen(fullUrl)      # fullUrl can be passed in via the queue, or other possible methods
            soup = BeautifulSoup(page)
            # Read Beautiful Soup docs for how to parse further

def main():
    numProcesses = 2
    for i in xrange(numProcesses):
        p = scraperClass(queue)
        jobs.append(p)
        p.start()           # This will call the scapperClass.run() method
if __name__ == "__main__":
    main()

我做了一个快速搜索,找到了一个名为Scrapy的pytohon抓取框架。它看起来很酷,但我还没有尝试过:http://scrapy.org/

这是他们教程中的一句话:

"所以你需要从网站中提取一些信息,但该网站不提供任何API或机制来以编程方式访问这些信息。Scrapy可以帮助你提取这些信息。

说它也可以处理API调用