我在抓取以下网站内容时遇到问题:http://www.qe.com.qa/wp/mw/MarketWatch.php
使用file_get_contents()永远不会得到正确的标签。我想删除以下标记的内容:td aria-describedby =" grid_OfferPrice"
该网站是否受到保护?因为当我尝试使用不同网站的相同方法时,它可以工作。如果是的话,那么这项工作有什么好处呢?
答案 0 :(得分:1)
查看抓取是否有效的方法是输出file_get_contents返回的内容。如果您没有任何回复或错误,那么您的IP可能已被其管理员限制。
如果它返回了源代码,那么它可以正常工作,但可能找不到您正在寻找的标签。 通过一次一个地回答这些问题来消除过程中的失败。
我查看了他们的源代码,而您搜索的aria属性似乎并不存在。
似乎他们从this page(http://www.qe.com.qa/wp/mw/bg/ReadData.php?Types=SELECTED&iType=SO&dummy=1401401577192&_search=false&nd=1401401577279&rows=100&page=1&sidx=&sord=asc
)的其他来源加载该网页上的数据
如果您想要该页面中的数据,请直接在其上使用file_get_contents。
online json editor中该页面的数据为您提供了一种快速查看这是否对您有用的解决方案的简洁方法。
下面列出了该数据的样本:
{
"total": "140",
"page": "1",
"records": "140",
"rows": [
{
"Topic": "QNBK/NM",
"Symbol": "QNBK",
"CompanyEN": "QNB",
"CompanyAR": "QNB",
"Trend": "-",
"StateEN": "Tradeable",
"StateAR": "المتداوله",
"CatEN": "Listed Companies",
"CatAR": "الشركات المدرجة",
"SectorEN": "Banks & Financial Services",
"SectorAR": "البنوك والخدمات المالية",
"ShariahEN": "N/A",
"ShariahAR": "N/A",
"OfferVolume": "7503",
"OfferPrice": "184.00",
"BidPrice": "182.00",
"BidVolume": "15807",
"OpenPrice": "190.0",
"High": "191.7",
"Low": "181.0",
"IMP": "182.0",
"LastPrice": "182.0",
"PrevClosing": "187.0",
"Change": "-5.0",
"PercentChange": "-2.6737",
"Trades": "980",
"Volume": "2588830",
"W52High": "199.0",
"W52Low": "145.0",
"Value": "481813446.4"
},
{
"Topic": "QIBK/NM",
"Symbol": "QIBK",
"CompanyEN": "Qatar Islamic Bank",
"CompanyAR": "المصرف ",
"Trend": "+",
"StateEN": ...
请务必阅读此链接about 'scraping' etiquette。
答案 1 :(得分:0)
Link: http://simplehtmldom.sourceforge.net/
$dom = new DOMDocument();
$dom->loadHTML(file_get_contents("EXAMPLE.COM");
$items = $dom->getElementsByTagName("YOUR TAG");
此类允许您搜索HTML代码以查找元素。我之前已经使用过几次,这是迄今为止我找到的最佳解决方案。