可能重复:
file_get_contents与https?
使用SimpleXML和PHP通过https获取XML内容的问题
我有网址:
哪个加载像这样的文件:
<calendars>
<calendar accommodation_id="1234567">
<day date="2012-08-09" vacancy="false" minimum_nights="7" arrival_day="true"/>
<day date="2012-08-10" vacancy="false" minimum_nights="3" arrival_day="true"/>
<day date="2012-08-11" vacancy="false" minimum_nights="3" arrival_day="true"/>
...
<day date="2014-01-31" vacancy="true" minimum_nights="3" arrival_day="true"/>
</calendar>
</calendars>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我的脚本不会让我获取此文件的内容.我正在使用与其他URL相同的脚本,但这总是会失败.
我的脚本是:
$accom2 = file_get_contents();
print_r($accom2);
Run Code Online (Sandbox Code Playgroud)
我需要为这种类型的URL做些什么吗?
我从网站收集数据,有时似乎无法访问(或者,它可能只是DNS主机,有时会出现一些问题).用PHP编写的程序(使用CLI启动)退出并显示错误:
无法解析主机'abcdef.com'
我想拦截这个错误,就像异常一样,因为程序一定不能退出.
我尝试了"尝试捕获",但这不起作用.
我想避免使用外部守护进程来重启程序......
谢谢您的帮助.
编辑:使用的代码:
function goToPage($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath("./cookies/cookie.txt"));
$ret = curl_exec($ch);
if ($ret === FALSE) {
die(curl_error($ch));
}
curl_close($ch);
$this->delay();
return $ret;
}
Run Code Online (Sandbox Code Playgroud) 我编写了一个简单的PHP脚本来使用CURL获取网站的源代码:
function file_get_contents_curl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/curl/cacert.pem");
$data = curl_exec($ch);
$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($data === false)
return false;
return array("content" => $data, "url" => $url, "httpcode" => $httpcode);
}
$data = file_get_contents_curl("https://www.facebook.com");
print_r($data);
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我正在获取Facebook源代码,但它获取的页面与不支持的浏览器相关.事实上,重定向后的最终URL是:http://www.facebook.com/unsupportedbrowser
有什么问题?
我是使用PHP而不是PHP本身的Web抓取新手.我的问题不是正则表达式相关,但似乎直接与booking.com网站有关.我想在特定城市刮取酒店的价格.为此,我在预订页面中复制了浏览器中的URL,并将其粘贴到我的代码中.
这是页面.
这是我的代码:
<?php
function getHTML($url,$timeout)
{
$ch = curl_init($url); // initialize curl with given url
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // set useragent
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // write the response to a variable
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow redirects if any
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // max. seconds to execute
curl_setopt($ch, CURLOPT_FAILONERROR, 1); // stop when it encounters an error
return @curl_exec($ch);
}
$html=getHTML("http://www.booking.com/searchresults.en.html?dcid=1;checkin_monthday=25;checkin_year_month=2014-7;checkout_monthday=26;checkout_year_month=2014-7;city=-1461464;class_interval=1;csflt=%7B%7D;interval_of_time=undef;no_rooms=1;or_radius=0;property_room_info=1;review_score_group=empty;score_min=0;src=city;ssb=empty;;nflt=ht_id%3D204%3Bclass%3D3%3B;unchecked_filter=class",10);
echo $html;
?>
Run Code Online (Sandbox Code Playgroud)
我确实打印了一个预订页面,但它没有考虑到URL中的参数,因为在页面上我得到它要求预订日期和城市...
我尝试在几个浏览器中粘贴此URL并隐藏窗口(以查看URL是否链接到Cookie或其他内容),并且它运行正常.也许我在cURL请求中错过了一个参数......
我需要解析HTML文件并删除除锚标记之外的所有内容.例如:
<html>
<body>
<p>boom</p>
<a href="/blah" rel="no-follow">Example</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我只需要保持:
<a href="/blah" rel="no-follow">Example</a>
Run Code Online (Sandbox Code Playgroud)
我正在使用cURL来检索html和我发现的一小段代码,除了标签的锚文本之外.这就是我正在使用的:
curl http://www.google.com 2>&1 | perl -pe 's/\<.*?\>//g'
Run Code Online (Sandbox Code Playgroud)
有一个简单的命令行方式来做到这一点?我的最终目标是将其放入bash脚本并执行它.我很难理解正则表达式和perl.
我需要调用一个接受json对象的宁静的Web服务。我能够找到像libcurl这样的库来从C应用程序调用Web服务。我还能够找到像json-c这样的库来在C中创建一个json对象。
libcurl接受一个字符串并将其发布到给定的Web服务URL。无论如何,我可以发布使用json-c库创建的json对象,并使用curl库调用Web服务。
请让我知道是否有其他库可以同时允许我创建一个json对象并调用Web服务或任何其他替代解决方案。
谢谢您的帮助。
我想要做
curl -H "Authorization: Basic YOUR_API_KEY" -d '{"classifier_id":155, "value":"TEST"}' "https://www.machinelearningsite.com/language/classify"
Run Code Online (Sandbox Code Playgroud)
我试过了
h = getCurlHandle(header = TRUE, userpwd = YOUR_API_KEY, netrc = TRUE)
out <- getURL("https://www.machinelearningsite.com/language/classify?classifier_id=155&value=TEST", curl=h,ssl.verifypeer=FALSE)
Run Code Online (Sandbox Code Playgroud)
但它说方法不允许
下面是我的代码,经过整夜搜索和工作后,我终于想出了如何让它发送短信.问题是我不能在正文消息中留下空格而且它不显示值$smsmessage.
extract($_POST);
$smsmessage1 = "This is the sms that will be sent";
$smsmessage = urlencode($smsmessage1);
//set POST variables
$url = 'http://www.mysmsgateway.com/bulksms/bulksms.php?username=myemail@domain.com&password=123456789&message=$smsmessage&mobile=2348035081907&sender=Boss';
$fields = array();
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
上面的代码发送消息,但将输出$smsmessage而不是$smsmessage从上面获取值.
两小时前,以下脚本有效.现在由于某种原因,我收到一个错误"警告:在第30行的_中除以零".这是脚本.任何人都可以告诉我我做错了什么以及如何纠正它?
基本上这个脚本是从另一个网站上的两个元素中提取数据,将它们分开得到一个数字,而这个数字又用于设置元素的宽度.对此进行了一段时间的故障排除 非常感谢提前!
<?php
define("FFF_SIXDEGREES", "http://www.stayclassy.org/fundraise?fcid=257739");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, FFF_SIXDEGREES);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
if(!($results = curl_exec($curl))) {
print("{ \"total\": \"$0.00\" }");
return;
}
$pattern = '/<li class="goalTitle">Raised so far:<\/li>\s*<li>\$([\d\.,]+)<\/li>/';
preg_match($pattern, $results, $matches);
$total = $matches[1];
$total = str_replace(",", "", $total);
// printf("<h2 class=\"raised-total\">$%s</h2>", formatMoney($total, true));
$pattern2 = '/<li class="goalTitle">My goal:<\/li>\s*<li>\$([\d\.,]+)<\/li>/';
preg_match($pattern2, $results, $matches);
$total2 = $matches[1];
$total2 = str_replace(",", "", $total2);
// printf("<h2 class=\"goal-total\">$%s</h2>", formatMoney($total2, true));
$diff = ($total/$total2) * 100; // THIS IS THE LINE OF CODE …Run Code Online (Sandbox Code Playgroud) 我想存储:
在我的名为products_data的表中,其filds名称为PID,product_name,category,subcategory,product_price和product_company.
我curl_init()在php中使用函数首先废弃网站URL,接下来我想将产品数据存储在我的数据库表中.以下是我迄今为止所做的事情:
$sites[0] = 'http://www.babyoye.com/';
foreach ($sites as $site)
{
$ch = curl_init($site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
$title_start = '<div class="info">';
$parts = explode($title_start,$html);
foreach($parts as $part){
$link = explode('<a href="/d/', $part);
$link = explode('">', $link[1]);
$url = 'http://www.babyoye.com/d/'.$link[0];
// now for the title we need to follow a similar process:
$title = explode('<h2>', $part);
$title = explode('</h2>', $title[1]);
$title = strip_tags($title[0]);
// INSERT DB CODE HERE e.g.
$db_conn = …Run Code Online (Sandbox Code Playgroud)