Python 从具有不同结构的不同域(大部分)中刮取多个单页

Python 从具有不同结构的不同域(大部分)中刮取多个单页,python,web-scraping,scrapy,web-crawler,phpcrawl,Python,Web Scraping,Scrapy,Web Crawler,Phpcrawl,我有一个非常具体的URL列表,我需要从中获取数据(不同的选择器/字段)。总共有大约1000个链接,来自大约300个具有不同结构(选择器/xpath)的不同网站。我想看看是否有人对如何做到这一点有任何建议。我在网上寻找解决方案,看到有人推荐Python和Scrapy。虽然我对这些不太了解,但仍在努力理解,如果我使用Scrapy/Python,我在网上发现的似乎是,我必须为每个链接创建一个单独的爬行器(至少是具有不同结构的链接)。我也研究了Scrapy的通用spider方法,并尝试在我的案例中使用这

我有一个非常具体的URL列表,我需要从中获取数据(不同的选择器/字段)。总共有大约1000个链接,来自大约300个具有不同结构(选择器/xpath)的不同网站。我想看看是否有人对如何做到这一点有任何建议。我在网上寻找解决方案,看到有人推荐Python和Scrapy。虽然我对这些不太了解,但仍在努力理解,如果我使用Scrapy/Python,我在网上发现的似乎是,我必须为每个链接创建一个单独的爬行器(至少是具有不同结构的链接)。我也研究了Scrapy的通用spider方法,并尝试在我的案例中使用这些方法,但都不起作用

我想要提取的示例链接和字段如下所示,其中“url”是页面,由“selector”标识的字段是我想要从该页面提取的内容。我希望在“name”字段下有每个字段的输出

最后,我确实对PHP有更好的了解,因此我们也非常感谢任何关于使用PHP的建议

你必须为任何你想刮的页面写蜘蛛

  • 刮削的基本规则
话虽如此,您发布的链接看起来像文章或报纸的链接。如果是这样的话,您可以查看Newspaper3k,它是一个python库,可以从任何文章/报纸中提取内容

这是如何从文章中获取元数据并进行处理的。由于大多数文章都在元数据中提供了用于SEO目的的信息,因此它很可能会刮取世界上几乎所有的文章


在这里查看

谢谢@rahul的回复/建议。正如我提到的,我是新手,对python或抓取数据没有太多知识。我才刚刚开始学习。我所说的需要为任何需要刮取的页面编写spider的意思是,我是否需要创建一个spider-1.py、spider_2.py、…、spider_n.py来刮取n个不同的页面,或者我是否可以使用一个通用spider并创建一种采用页面特定参数的实例。同样,如果我是用面向对象的方法来思考这个问题的,如果我走错了路,请指导我。再次感谢您的回复!关于OrishHey Orish,答案是否定的。正如我已经说过的,新闻纸3K消除了创建多个蜘蛛的需要。您可以处理任何类型的文章,而无需创建爬行器本身。你所要做的就是,将要提取的文章url提供给Newspaper3k库,它将从文章中提取数据。“没有必要为每篇文章创建spider”。希望这有帮助,奥里什,怎么样?你的箱子和我的很相似。新闻纸3K在90%的时间里对我有效。但希望它能起到95%的效果。我也有很多网站可以提取信息,但受newspaper3k作者提取器功能的限制。因为结构不同(如你所说),一些作者没有被接受。
"urls":[
         {
            "url":"https://www.australianclinicaltrials.gov.au/resources-clinical-trials-australia",
             "fields":[
               {
                  "name":"Body",
                  "selector":"#block-system-main .even"
               },
               {
                  "name":"Page Updated",
                  "selector":"time"
               }
            ]
         },
         {
            "url":"https://www.canada.ca/en/health-canada/corporate/about-health-canada/branches-agencies/health-products-food-branch/biologics-genetic-therapies-directorate.html",
            "fields":[
               {
                  "name":"Body",
                  "selector":"main h1#wb-cont+div"
               },
               {
                  "name":"Page Updated",
                  "selector":"#wb-dtmd time"
               }
            ]
         }
      ]