Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
Web scraping 如何从网站的搜索栏中获取所有可能的结果_Web Scraping_Web Crawler_Scrape_Google Crawlers - Fatal编程技术网

Web scraping 如何从网站的搜索栏中获取所有可能的结果

Web scraping 如何从网站的搜索栏中获取所有可能的结果,web-scraping,web-crawler,scrape,google-crawlers,Web Scraping,Web Crawler,Scrape,Google Crawlers,这是我的第一个网页抓取任务。我的任务是清理一个网站 这是一个包含丹麦律师姓名的网站。我的困难在于,我只能根据我在搜索栏中输入的特定名称查询来检索名称。是否有一个在线的网络工具,我可以用来刮网站包含的所有名称?我使用过Import.io之类的工具,但迄今为止没有成功。我对所有这些是如何工作的感到非常困惑。请向下滚动到更新2 该网站强制您输入至少一个搜索参数,因此您可以循环搜索Arbejdsområde列表的所有项目,并对每个项目提出请求。下面的示例显示了如何在Excel VBA open VBE中

这是我的第一个网页抓取任务。我的任务是清理一个网站

这是一个包含丹麦律师姓名的网站。我的困难在于,我只能根据我在搜索栏中输入的特定名称查询来检索名称。是否有一个在线的网络工具,我可以用来刮网站包含的所有名称?我使用过Import.io之类的工具,但迄今为止没有成功。我对所有这些是如何工作的感到非常困惑。

请向下滚动到更新2

该网站强制您输入至少一个搜索参数,因此您可以循环搜索Arbejdsområde列表的所有项目,并对每个项目提出请求。下面的示例显示了如何在Excel VBA open VBE中执行此操作,创建标准模块,粘贴代码并运行测试:

选项显式 子测试 暗响应为字符串 作为对象的Dim oItems 暗黄 暗阿达塔 像字符串一样模糊的内容 一段时间 我想我会坚持多久 Dim j尽可能长 '检索搜索页面HTML内容 XmlHttpRequest-GET,http://www.advokatnoeglen.dk/、响应 '提取工作区项目 提取选项响应,ctl00$ContentPlaceHolder$Search$AreaSelect,oItems oItems。删除oItems.0 内容= '处理每个工作区项目 对于每种类型的项目 Debug.Print项[&vItem&] lPage=0 '处理每个结果页 做 调试。打印vbTab和Page[&lPage&] '检索结果页HTML内容 XmlHttpRequest-GET,http://www.advokatnoeglen.dk/sog.aspx?s=1&t=0&a= &vItem&&p=&lPage,,S响应 '提取结果表 解析响应_ ]*id=ctl00\U内容占位符\U网格[^>]*>[\s\s]*_ 答复,_ 阿达塔_ 错误的 '存储解析表 sContent=sContent&aData0 调试。打印vbTab和已解析的及LensContent lPage=lPage+1 多芬特 循环直到INSTRSSRESPONSE。我的输出如下:

一般来说,不建议将正则表达式用于HTML解析,因此。在本例中处理的数据非常简单,这就是为什么使用正则表达式对其进行解析。关于正则表达式:特别是

顺便说一句,还有另一个使用类似方法的答案:,和

更新

上面建议的抓取是基于解析由Arbejdsområde参数过滤的搜索结果,事实证明,实际返回的结果是不准确的。那些拥有乘法Arbejdsområder的律师在结果中出现乘法,而拥有空Arbejdsområder的律师根本不在结果中

可用于此类刮除的另一个参数是Retskreds,而不是Arbejdsområde。所有律师记录都包含地址,并且只有一个地址,所以结果是完整的,不包含重复项。请注意,一名律师可以涉及多个办公室,因此结果中将有多个记录

有一个代码,允许为循环中的每个条目刮取详细信息:

选项显式 子测试 暗响应为字符串 作为对象的Dim oItems 调暗键 以字符串形式显示 暗aTmp 暗阿达塔 一段时间 我想我会坚持多久 Dim j尽可能长 '检索搜索页面HTML内容 XmlHttpRequest-GET,http://www.advokatnoeglen.dk/、响应 '提取回收项目 提取选项响应,ctl00$ContentPlaceHolder$Search$CourtSelect,oItems oItems。删除oItems.0 i=0 '处理每个Retskreds项 对于oItems中的每个vKey sItem=oItemsvKey 调试。打印区域和站点m&&vKey lPage=0 '处理每个结果页 做 调试。打印vbTab&Page&lPage '检索结果页 XmlHttpRequest-GET,http://www.advokatnoeglen.dk/sog.aspx?s=1&t=0&c= &sItem&&p=&lPage,,s响应 '提取表 解析响应_ ]*id=ctl00\U内容占位符\U网格[^>]*>[\s\s]*_ 答复,_ aTmp_ 错误的 '从表中提取数据 解析响应_ ]*>[\s\s]*_ 答复,_ aTmp_ 错误的 '从表中提取数据 解析响应_ \s*&_ ]*>\s*[\s\s]*?\s*\s*&_ ]*>\s*[\s\s]*?\s*\s*&_ ]*>\s*[\s\s]*?\s*\s*&_ , _ aTmp0_ 阿达塔_ 符合事实的 调试。打印vbTab和已解析的UBoundaData+1 lPage=lPage+1 多芬特
循环直到InStrsResponse,如果名称在某处不可见,并且您无法搜索所有内容,那么该工具如何为您找到数据?当然,它的某些部分可能会被谷歌编入索引,但我怀疑这有什么帮助哇!这很有效
伟大的非常感谢你的帮助。在该网站上,当你点击律师姓名时,它会提供电子邮件和电话号码等联系信息。是否有一种方法可以循环遍历律师姓名的所有输出,以获取联系人详细信息?@HakeemBaba您只需在上次ParseResponse调用之后添加一个循环遍历所有项目,请求每个提取的URL,解析响应以获取详细信息,并将提取的详细信息添加到aData中。以上示例中显示了所有这些操作。