用PHP从搜索查询中抓取数据

用PHP从搜索查询中抓取数据,php,autocomplete,scrape,Php,Autocomplete,Scrape,我使用的是PHP,也是一个完全的noob 所以我有一个URL,它接受查询并返回一个包含一些匹配项的数据文件 假设www.example.com/search?q=$query 其中,$query是搜索词的名称 但是,当您在浏览器中转到URL时,它会下载一个包含其中信息的文本文件 我希望遍历整个字母表和最多10个字母的每个字母组合,从所有返回的文件中提取数据并将其存储在数据库中 我不确定如何从PHP脚本中打开每个URL。有没有比下载每个文件并提取信息然后删除文件更好的方法 我下面的东西根本不起作用

我使用的是PHP,也是一个完全的noob

所以我有一个URL,它接受查询并返回一个包含一些匹配项的数据文件

假设www.example.com/search?q=$query 其中,$query是搜索词的名称

但是,当您在浏览器中转到URL时,它会下载一个包含其中信息的文本文件

我希望遍历整个字母表和最多10个字母的每个字母组合,从所有返回的文件中提取数据并将其存储在数据库中

我不确定如何从PHP脚本中打开每个URL。有没有比下载每个文件并提取信息然后删除文件更好的方法

我下面的东西根本不起作用

$alphabet = "abcdefghijklmnopqrstuvwxyz";
for ($i=0; $i<=25; $i++){
    $query = $alphabet[$i];
    $url = "www.example.com/search?q=$query";
    $html = fopen($url);
    $stringify = (string)$html;
    echo $stringify;
}
$alphabet=“abcdefghijklmnopqrstuvwxyz”;
对于($i=0;$i),您不能仅从URL打开文件。您需要使用HTTP客户端库才能获取文件。此链接可能会派上用场:


编辑:根据alex的评论,您可能希望在
php.ini
文件中选中
allow\u url\u fopen

$html = fopen($url);
这不起作用。fopen返回的是一个文件句柄,而不是一个文件。您必须对该文件句柄执行
fread()
,才能真正读取数据


您想要的是
file\u get\u contents()
,在bare mininum。

您的脚本与您的文件在同一台服务器上运行吗?我知道您没有认真对待脚本,但请确保获取任何类似的输入数据并将其清除。如果数据是恶意创建的,它很容易对您的数据库造成不良影响。这里有大量相关问题和答案堆栈溢出。无论如何,如果此脚本在同一台服务器上运行,则更容易的方法是使用glob()并获取所有[a-zA-Z]{1,10}.txt(或任何文件扩展名)你知道从1到10的每一个字母组合都会产生146万亿个结果,对吗?你可能需要重新思考你需要做什么——你所做的任何事情都可能行不通。@Phil Brown:你可以,但你会得到类似“资源id#1”的东西作为值:P,但他也忽略了在fopen()中添加第二个参数,如果
php.ini
中启用了
allow\u url\u fopen