我正在尝试解析WorldCat.org的搜索结果,以获取有关书籍和文章的基本信息。
可以在此处找到典型的搜索结果(以及我用于测试的搜索结果): http://www.worldcat.org/search?q=ti%3Aorganizations&fq=dt%3Abks&qt=advanced&dblist=638
该页面的html位于:http://pastebin.com/w2U91F1i
这是我正在使用PHP preg_match_all的正则表达式来捕获每个条目的基本细节:
$data = file_get_contents($url);
preg_match_all('/<div class="oclc_number">(.*?)<\/div>\n.*?<div class="name">\n.*?<a href="(.*?)"><strong>(.*?)<\/strong><\/a>\n.*?\n\n<div class="author">by\s(.*?)<\/div><div class="type">.*?<span class=\'itemType\'>(.*?)<\/span>.*?\n.*?<span class="itemLanguage">(.*?)<\/span>.*?<div class="type">Publication:\s*?(.*?)<\/div>/', $data, $topics, PREG_SET_ORDER);
当我将这个表达式与regexr工具(http://gskinner.com/RegExr/)一起使用时,它工作得很好(除了我使用\ r而不是\ n - 通常\ r \ n对我不起作用)。但是preg_match_all每次都给我一个空数组。
关于我做错了什么的线索?
答案 0 :(得分:3)
每当我需要抓取HTML时,我倾向于使用Simple HTML DOM Parser库,它接受一个HTML树并将其解析为可遍历的PHP对象,您可以查询类似JQuery的内容。
答案 1 :(得分:-1)