Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我们可以写一个脚本,可以用来刮多个网站_Python_Selenium_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 我们可以写一个脚本,可以用来刮多个网站

Python 我们可以写一个脚本,可以用来刮多个网站,python,selenium,web-scraping,beautifulsoup,Python,Selenium,Web Scraping,Beautifulsoup,我已经为30个不同的网站写了30个不同的抓取脚本。我的一个朋友告诉我,可以用一个代码文件来抓取所有这30个网站,然后把它放到仪表板上进行动态抓取(我不明白他的意思)。我知道每个网站都有自己的结构,不同的数据来自不同的页面和元素。另一方面,一些网站提供动态数据,而不是静态数据,我使用selenium对其进行抓取 我真的不知道他在想什么,是否有可能遵循一条路径,在那里我纠正一个长脚本文件,并使用它来抓取许多网站 如果有人知道这方面的知识,能帮我提供想法、教程、网页内容和…,我将不胜感激。是的,你可以

我已经为30个不同的网站写了30个不同的抓取脚本。我的一个朋友告诉我,可以用一个代码文件来抓取所有这30个网站,然后把它放到仪表板上进行动态抓取(我不明白他的意思)。我知道每个网站都有自己的结构,不同的数据来自不同的页面和元素。另一方面,一些网站提供动态数据,而不是静态数据,我使用selenium对其进行抓取

我真的不知道他在想什么,是否有可能遵循一条路径,在那里我纠正一个长脚本文件,并使用它来抓取许多网站

如果有人知道这方面的知识,能帮我提供想法、教程、网页内容和…,我将不胜感激。

是的,你可以;
  • 为每个刮板制作模块
  • 制作一个主应用程序
  • 将模块导入主应用程序
  • 使用或方法刮取目标网站
  • 概念代码:
    但是如果你需要一些技术,我建议你换一种;你也可以用Splash处理动态网站,也可以用Scrapy。它们为大型/大型网络爬虫应用程序而开发,甚至用于生产。

    有一些工具,如报纸,可以让您为具有特定结构的站点定义一个刮取功能,然后刮取所有具有刮取功能的站点。正如它的名字所暗示的那样,报纸是新闻网站的开箱即用,但一般原则应该是显而易见的。我的脚本是从那些为小企业发布商业机会的网站上刮下来的。我正在为我的业务团队取消这些,以便他们了解来自其他组织的任何机会。现在就像我说的,我有很多脚本,每一个都是不同的。你能给我推荐一些主题,技术,图书馆。。。我跟随并寻找更多关于这方面的信息。@DRPK是的,亲爱的,但我不认为我们走在同一条道路上。您试图告诉我如何在报废时使用多处理技术(这里我们仍然有一长串报废程序),但我是说报废脚本应该是相同的,并且非常通用,可以用于报废许多网站。我说的对吗?你说的是软件架构之类的东西?制造微服务?或者你想要一些像Scrapy/Spider这样的技术?你知道刮痧吗?你也可以用Splash处理动态网站,Splash可以和Scrapy一起工作;他们为大型/大型网络爬虫应用程序制作,甚至用于生产。@DRPK,嘿,谢谢你的评论,你看起来很支持我,我很感激。我可以收到你的电子邮件,以便我在那里与你进行更多的讨论。如果你需要并行运行,多处理和/或多线程是很有用的,如果你扩展到数千个网站,最终可能需要多处理和/或多线程;但对于几十个人来说,这可能是一个不必要的复杂因素。@tripleee是的,你是对的,我们有很多方法可以完成他的工作。我刚才解释了其中一种,但关于不必要的复杂因素,你没有。与许多语言不同,python很简单,其模块也很简单。python是为实现高科技而设计的,只需几行代码。
    # This code will not run!
    
    from multiprocessing import Pool
    from Scrapers import Scraper1, Scraper2, Scraper3, ...
    
    
    def run_each_scraper(get_scraper_object):
        get_scraper_object.run()
    
    def launcher():
        list_of_websites = []
        # use loops here
        reserve_scraper_objects_for_websites = [Scraper1.scrape(list_of_websites[0]),
                                                Scraper2.scrape(list_of_websites[1]),
                                                ...]
        process_objects = Pool(20) # Depends on your system resource
        process_objects.map(run_each_scraper, reserve_scraper_objects_for_websites)
    
    if __name__ == '__main__':
        launcher()