我使用下面的功能使用curl功能下载网页,效果很好。
目前我正在从网站下载页面。问题是他们正在使用 倒计时为15秒的java脚本。所以可以下载 这个页面经过一段时间后(搜索和头脑风暴对我来说没什么用)?
function curldll($target_url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0)');
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
$html= curl_exec($ch);
return $html;
}
答案 0 :(得分:2)
由于页面正在使用javascript计时器来加载内容,所以你无法通过curl来完成它,你可以尝试PhantomJS,这是一个无头的WebKit浏览器,它将完全执行页面并返回动态组装的DOM
答案 1 :(得分:0)
尝试 [DataContract]
public class PCDLoggerBinSerializableData: INotifyPropertyChanged
{
#region CONSTRUCTORS
public PCDLoggerBinSerializableData() { }
public PCDLoggerBinSerializableData(string _languageInUse, bool _useBubbleNotifications)
{
LanguageInUse = _languageInUse;
UseBubbleNotifications = _useBubbleNotifications;
}
#endregion
#region OPTIONS
[DataMember]
public string LanguageInUse { get; set; }
[DataMember]
private bool useBubbleNotifications;
public bool UseBubbleNotifications
{
get { return useBubbleNotifications; }
set
{
useBubbleNotifications = value;
Bubble.NoBubblesPlease = !useBubbleNotifications;
OnPropertyChange("UseBubbleNotifications");
}
}
#endregion
#region NOTIFIER
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChange(string inName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("inName"));
}
#endregion
}
库(Java),它是HtmlUnit
以及使用真实浏览器的其他应用的基础。 Selenium
无法与cURL
合作。或者如果您喜欢JavaScript
,请使用PhantomJS
。