Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Apify web服务忽略URL片段_Javascript_Apify - Fatal编程技术网

Javascript Apify web服务忽略URL片段

Javascript Apify web服务忽略URL片段,javascript,apify,Javascript,Apify,我有一个我想抓取的URL列表,所以我把它放在startUrls中,如下所示 "startUrls": [ { "url": "https://www.example.com/sample#000000", "method": "GET" }, { "url": "https://www.example.com/sample#111111", "method": "GET" } ] 这是我的pageFunctio

我有一个我想抓取的URL列表,所以我把它放在
startUrls
中,如下所示

"startUrls": [
    {
      "url": "https://www.example.com/sample#000000",
      "method": "GET"
    },
    {
      "url": "https://www.example.com/sample#111111",
      "method": "GET"
    }
  ]
这是我的
pageFunction
code的摘录

async function pageFunction(context) {
  const { request } = context;
  var name;
  try {
     name = document.querySelector('h1').textContent;
  } catch (e) {
     name = "null";
  }
  return {
     link: request.url,
     name
  };
}
它可以很好地处理可以通过域或路径区分的URL。但是,如果唯一的区别是在片段中,则只处理第一个URL,因为第二个URL被认为是重复的,因此被跳过

我已经尝试在
pageFunction

await context.enqueueRequest({
  url: context.request.url,
  keepUrlFragment: true,
});
但这会导致另一个问题,即它会为每个URL生成重复的结果


那么我应该怎么做才能使它正确工作呢?除了调用
enqueueRequest
keepUrlFragment
设置为
true
,还有其他方法吗

不幸的是,您现在无法直接在startUrls中设置
keepUrlFragment
。因此,我建议根本不使用它们。您可以在
customData
中将它们作为数组传递。然后您可以将这样的页面函数与类似
http://example.com
和标签
开始

async function pageFunction(context) {
  const { request, customData } = context;
  if (request.userData.label === 'START') {
     for (const url of customData) {
        await context.enqueueRequest({
          url,
          keepUrlFragment: true,
        });  
     }
  } else {
     // Your main scraping logic here
  }

}