如何抓取网站/将数据提取到数据库C#和SQLSERVER中
我想构建一个单一的累积webapp,在这个应用中,我所在组织的用户只能使用一个站点,而不能出于不同的目的使用十多个站点。我所在组织有不同的考勤、账户、人力资源等站点。我想对所有这些站点进行爬网,读取它们的数据,并使用c#将其保存在我的sqlserver中,然后用户可以直接使用/搜索我的系统中的数据如何抓取网站/将数据提取到数据库C#和SQLSERVER中,c#,sql-server,web-crawler,C#,Sql Server,Web Crawler,我想构建一个单一的累积webapp,在这个应用中,我所在组织的用户只能使用一个站点,而不能出于不同的目的使用十多个站点。我所在组织有不同的考勤、账户、人力资源等站点。我想对所有这些站点进行爬网,读取它们的数据,并使用c#将其保存在我的sqlserver中,然后用户可以直接使用/搜索我的系统中的数据 How would that work? What tools/libraries can/should I use? Are there good tutorials on that? How do
How would that work?
What tools/libraries can/should I use?
Are there good tutorials on that?
How do I best deal with binary data (e.g. images)?
Are there already good solutions for that?
如果你所走的路充满了问题。我从来没有尝试过。考虑这些挑战:
- 您必须解析HTML,它可能格式正确,也可能格式不正确
- 数据可能会散布各种非数据(广告、导航、悬停文本、javascript、注释等)
- 你不知道数据的年代
- 给定站点的HTML格式可能会在一天到下一天发生变化,可能会打破您以前的抓取策略
- 重要信息可能存在于仅在满足授权步骤后访问的页面上
- 过去存在于一个URL的数据可能已被移动,现在存在于不同的URL,或者被拆分为多个不同的URL
- 只有在输入某些搜索参数或某些用户登录时,才能找到某些数据
- 您站点的用户可能未被授权(?)查看您从其他站点获取的数据
我建议构建一个数据仓库,并与这些系统的提供商合作,从他们的根数据库访问数据源(不过可能是:RESTURL、直接SQL、web服务、夜间数据转储)。使用ETL从这些系统后面的原始数据库中提取、转换和加载数据 为什么不能更直接地公开来自其他系统的数据,可能是作为web服务?为什么要复制它们的存储?我尝试了WebRequest req=WebRequest.Create(url);但这也给了我一个问题。远程服务器返回了一个错误:(503)服务器不可用。感谢您提供的信息。是的,我知道所有上述缺点…我无法访问他们的数据库,他们也没有任何api…唯一的方法是对他们的信息进行爬网,将其保存到我的数据库中,然后使用它。每天我都会运行爬网