使用PHP来爬取HTML页面吗?

17 浏览
0 Comments

使用PHP来爬取HTML页面吗?

这个网站上列出了超过250门课程。我想要获取每门课程的名称,并使用PHP将其插入到我的MySQL数据库中。课程的格式如下:\n

计算机科学

\n

媒体研究

\n…\n有没有办法用PHP来完成这个任务,以免我陷入疯狂的数据录入噩梦中?

0
0 Comments

问题: 如何使用PHP爬取HTML页面?

原因: 爬取HTML页面的需求。

解决方法: 使用以下HTML解析库来实现:http://simplehtmldom.sourceforge.net/

建议使用以下基于第三方的替代方案,它们实际上使用DOM而不是字符串解析:phpQuery, Zend_Dom, QueryPath和FluentDom。

0
0 Comments

问题的出现原因:如何使用PHP解析HTML页面的问题已经被问过和回答过很多次。虽然对于特定的用例来说,正则表达式是可行的,但最好和更可靠的方法是使用一个合适的解析器来完成这个任务。

解决方法:以下是如何使用DOM来解析HTML的方法:

$dom = new DOMDocument;
$dom->loadHTMLFile('http://courses.westminster.ac.uk/CourseList.aspx');
foreach($dom->getElementsByTagName('td') as $title) {
    echo $title->nodeValue;
}

对于将数据插入到MySql中,应该使用mysqli扩展。在StackOverflow上有很多关于如何插入数据的示例,请使用搜索功能进行查找。

0
0 Comments

问题原因:使用正则表达式进行网页爬取是一种快速、方便的方法,但是并不是最可靠的方法,因为网页的结构可能会发生变化,导致正则表达式匹配不准确。

解决方法:可以使用PHP的DOM扩展来解析HTML页面,这是一种更可靠的方法。DOM是PHP的原生扩展,不需要下载或安装任何额外的库。使用DOM可以轻松地提取页面中的数据,并且比正则表达式更可靠。以下是使用DOM解析HTML页面的示例代码:

$dom = new DOMDocument();
$dom->loadHTMLFile("http://your-url.com/page.html");
$tds = $dom->getElementsByTagName("td");
foreach ($tds as $td) {
    $text = $td->nodeValue;
    // insert $text into the database
}

这段代码使用DOMDocument类加载HTML文件,并使用getElementsByTagName方法获取所有的td元素。然后,通过遍历td元素,可以获取到每个td元素的文本内容,并将其插入数据库中。

使用DOM解析HTML页面的好处是,它更符合HTML的结构,不容易受到页面结构变化的影响。同时,DOM的使用也更容易理解和维护。

使用正则表达式进行网页爬取是一种快速、方便的方法,但并不是最可靠的方法。为了更准确地提取页面数据,可以使用PHP的DOM扩展来解析HTML页面。DOM的使用更符合HTML的结构,更可靠,并且更容易理解和维护。

0