i将HTML页面解析到纯文本中,以查找和获取数字值. 在整个HTML混乱中,我需要找到这样的字符串: C) Debiti33.197.431,90I - Di finanziamento 我需要编号33.197.431,90(在每个HTML解析请求中都将更改此数字. 是否有任何迫切号以实现这一目标?例如: STARTS WITH 'C) Debiti' ENDS WITH 'I - Di finanziamento' GETS the middle string that can be whatever. 每当我尝试时,我都会得到空的结果...对Regex的了解不多. 你能帮我么? 非常感谢. 解决方案 您可以尝试以下正则 ^C\) Debiti\K.*?(?=I - Di finanziamento$) demo PHP代码将是
以下是关于 web-scraping 的编程技术问答
我正在使用Simple_html_dom Parser. 以下代码是返回垃圾输出: $opts = array( 'http'=>array( 'method'=>"GET", 'header'=> "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n". "Accept-Encoding: gzip, deflate\r\n". "Accept-language: en-US,en;q=0.5\r\n" . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.6) Gecko
我想构建一个刮板,通过 leveson查询以下格式为明文: 1 Thursday, 2 February 2012 2 (10.00 am) 3 LORD JUSTICE LEVESON: Good morning. 4 MR BARR: Good morning, sir. We're going to start today 5 with witnesses from the mobile phone companies, 6 Mr Blendis from Everything Everywhere, Mr Hughes from 7 Vodafone and Mr Gorham from Telefonica.
我正在尝试使用卷曲从URL获取HTML源. 以下代码在Localhost中完美工作,但移动到服务器时不会返回任何内容: function get_html_from_url($url) { $options = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => false, CURLOPT_ENCODING => "", CURLOPT_USERAGENT => "User-agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Sa
我想用SimpleHtmldom从Google Scholar个人资料中删除出版物. 我有用于刮擦项目的脚本,但问题是,我能够仅刮擦项目. 当我使用这样的URL 时 $ html-> load_file(" 用户= sx4g9ygaaaaj "); 仅显示20个项目.更改URL 时,我可以增加数字 $ html-> load_file(" 通过设置" pageize"属性.但是问题是,100是最大出版物数量,网页能够显示什么. 有什么方法可以从个人资料中删除所有项目? 解决方案 您不能一次获得所有项目 https://scholar.google.com/citations?user=Sx4G9YgAAAAJ&hl=&view_op=list_works&cstart=100&pagesize=100 在上面的URL中关注 cstart 属性,假设您已经抓住了100个项目,那么现在您将输入cstart=100并获取100个列表,然后cstar
我正在使用Symfony,Goutte和Domcrawler刮擦页面.不幸的是,此页面上有许多老式的数据表,没有ID或类或识别因素.因此,我试图通过从请求中返回的源代码进行解析来查找表格,但我似乎无法访问任何信息 我认为,当我尝试过滤它时,它只会过滤第一个节点,这不是我所需的数据所在的位置,因此什么也没返回. 所以我有一个$crawler对象.而且我试图循环以下以获取我想要的东西: $title = $crawler->filterXPath('//td[. = "Title"]/following-sibling::td[1]')->each(funtion (Crawler $node, $i) { return $node->text(); }); 我不确定Crawler $node是什么,我只是从网页上的示例中得到它.也许,如果我可以使此功能工作,那么它将通过$crawler对象中的每个节点循环循环,并找到我实际想要的内容. 这是页面的
我想刮擦亚马逊所有交易 page 所以我正在使用卷曲php $request = 'http://www.amazon.com/gp/goldbox/all-deals/ref=sv_gb_1'; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$request); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 80); $f
我正在使用简单的html dom解析器,我想完全忽略"嵌套"元素的内容,并获取程序" pre"元素的内容.
Text that I want ignored
This is the text I want to access
我无法控制HTML源,所有者最近添加了"嵌套"元素.在访问我需要的内容之前: $page_contents = file_get_html($url); $div_content = $page_contents->find('div[id=parent]pre', 0)->innertext; ,但显然新的嵌套元素打破了我的方法. 我似乎找不到有关这种情况的任何正式文档. 解决方案 未测试,但请尝试此 $div_content = $page_contents->f
我有一个数据聚合器,该数据聚合器依赖于刮擦多个站点,并以可搜索用户搜索的方式索引他们的信息. 我需要能够每天刮擦大量页面,并且我使用简单的卷发请求遇到了问题,快速序列执行很长一段时间时,这些请求很慢(shraper基本上运行24/7, ). 简单地运行多卷曲请求,而循环相当慢.我通过在后台过程中执行单个卷曲请求来加快速度,该请求的起作用速度更快,但是迟早的请求开始堆积,最终使服务器崩溃了. 是否有更有效的刮擦方法?也许命令行卷曲? 解决方案 在大量页面中,您需要某种多线程的方法,因为您将花费大部分时间在网络上等待网络I/O. 上次我玩PHP线程并不是一个很棒的选择,但也许已经改变了.如果您需要坚持使用PHP,则意味着您将被迫采用多进程方法:将工作量分配到n个工作单元中,并运行每个脚本的n个实例,每个脚本都会收到1个工作单位. 提供可靠且良好线程实现的语言是另一种选择.我在Ruby和C中的线程有很好的经验,似乎Java线程也非常成熟和可靠. 谁知
我以前做过网络刮擦,但这从来都不是这种复杂的.我想从学校网站获取课程信息.但是,所有课程信息都显示在网络刮擦的噩梦中. 首先,当您单击"类的时间表" URL时,它会首先引导您浏览其他几页(我相信要设置cookie并检查其他废话). 然后,它最终将页面加载一个iframe,显然只喜欢从机构的网页加载时加载它(即Arizona.edu). 从那里,必须通过实际上没有重新加载页面但仅提交ajax查询的按钮进行表单提交,我认为它只是操纵iframe. 这个查询对我来说特别很难复制.我一直在使用php和卷曲来模拟浏览器访问初始页面,收集是正确的cookie等.但是我认为我的卷曲函数正在发送问题,因为它永远不会让我在最初的"搜索表格"加载后执行任何查询. 任何帮助都很棒... http://www.arizona.edu/students/registering-classes-------- >"课程时间表" 或在这里: http://schedule.a
我已经有几天的问题了... 我必须从PHP加载页面的整个HTML. 在此页面上,有一个jQuery函数,当加载所有页面时,都会调用.此功能将其他HTML加载到页面中,因此我必须加载所有HTML(也加载了jQuery的零件).我可以知道,我将获得所有页面,试图找到仅从jQuery加载的标签. (例如:带有名称XXX的标签输入,带有属性多个的标记输入等) ) 所以我尝试: $html = file_get_contents("http://wwww.siteToScrape.com"); if (strpos($html, 'multiple') !== false) { echo 'found'; } else { echo 'not found'; } 但结果是"找不到". 然后我下载了简单的html dom 我尝试: include 'simple_html_dom.php'; $html = file_get_html("http://w
我正在尝试刮擦一些HTML(在作者的许可下).我正在使用php库在这里建议的,直到我遇到一个看起来像这样的链接之前,它一直运作良好: 我认为这是一些ASP.NET.当我单击它时,它不会更改URL,它只是将一些新内容加载到页面中,我也想刮擦. 我该如何解决这个问题? 我想我需要模拟点击,但是在处理RAW HTML时我无法做到这一点,我需要某种浏览器/JS解释器,否? 是否有适合此任务的库?我不仅限于PHP,但首选. 解决方案 我最终将python与Selenium Firefox Web驱动器一起使用.由于我正在使用真正的浏览器,因此我可以做FF可以做的一切. 其他解决方案 __doPostBack()确实是ASP.NET的东西.这是功能的作用: var theForm = document.forms['FORMNAME']
我想在a标签中提取文本,但是我不希望span class中的文本上写着"新清单".使用XPATH,我如何才能获得以下文本: 新!使命召唤:第二次世界大战(Microsoft Xbox One Disc 2017)WW2工厂 密封! php刮刀 $document = new DOMDocument( '1.0', 'UTF-8' ); $document->preserveWhiteSpace = false; $internalErrors = libxml_use_internal_errors( true ); $ebayhtml = file_get_contents( $ebayurl ); $document->loadHTML( $ebayhtml ); libxml_use_internal_errors( $internalErrors ); $xpath = new DOMXpath( $document ); $headers = $xpath-
我认为主题问这个问题,我通常会使用PHP进行解析/网络刮擦,但是我真的很糟糕的时间刮擦JavaScript ex:解析JavaScript执行时出现的DIV. 我阅读了有关javaScript的解析器库的Ruby,所以问题是wangaje是用于程序刮擦的languaje,它将有效刮擦JavaScript生成的内容?它在这里是PHP的图书馆,例如Ruby用于解析JavaScript内容的图书馆? 解决方案 为此有一些策略.根据您的需求,请考虑在语法上实例化浏览器实例,您可以将其连接到. 这个想法是,让浏览器完成工作,因为该页面是为浏览器而不是您的机器人制作的.然后,您可以使用浏览器插件来点击并刮掉,该浏览器插件将数据馈送到运行的主要应用程序中. 这可能对您需要的东西过大.我会给你决定. 其他解决方案 您应该查看一些无关/无头浏览器.有一些为爪哇写的.我没有找到一个php. 看: htmlunit 高尔夫 其他解决方案 您可以尝试使用
如果我尝试阅读网站的来源,我有时会得到以下(示例URL): Warning: file_get_contents(http://www.iwantoneofthose.com/gift-novelty/golf-ball-finding-glasses/10602617.html) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /home/public_html/pages/scrape.html on line 165 却可以单独使用URL ..为什么会发生这种情况? 我尝试了以下解决方法,但结果相同: $opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n")); $context = stream_cont
我有三个URL,这些URL具有我想要的数据.但是不同的HTML标签中的每个数据.这就是为什么我不能为所有人提供同样的XPath.我需要尝试"如果找不到的话这个XPath,然后尝试一下."就像一种方式.但是我对如何做有点困惑? 例如,这些是链接$linkBox: array(3) { [0]=> string(34) "https://lions-mansion.jp/MF161026/" [1]=> string(34) "https://lions-mansion.jp/MF171045/" [2]=> string(34) "https://lions-mansion.jp/MF171010/" } 我正在一个一个链接中.对于第一个.我给XPath: $get = []; foreach ($linkBox as $box){ $content = pageContent($box);