首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何管理木偶网抓取中的会话数据

如何管理木偶网抓取中的会话数据
EN

Stack Overflow用户
提问于 2022-10-07 00:27:18
回答 1查看 56关注 0票数 -1

我试着用木偶机从这个网站上删除数据。我认为需要保留会话数据来导航站点上的不同页面。下面是我的代码,有时有些页面没有加载,并且检测到我的请求是机器人请求。

请看代码,并帮助我的会话管理时,网络刮木偶。

代码语言:javascript
运行
复制
const puppeteer = require('puppeteer-extra')
const storage = require('node-persist');
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())
const cheerio = require('cheerio')
const pretty = require("pretty");


puppeteer.launch({
    headless: false,
    args: ["--disable-setuid-sandbox"],
    'ignoreHTTPSErrors': true,
    executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
    userDataDir: '/Users/username/Library/Application Support/Google/Chrome/Default'
}).then(async browser => {
    const page = await browser.newPage()
    const baseURL = 'https://www.immobilienscout24.de'

    for(var p=1; p <= 10;  p++) {

     
    await page.goto("https://www.immobilienscout24.de/Suche/de/neubauwohnung-mieten?pagenumber="+p,{
      waitUntil: "load"
    })

    const client = await page.target().createCDPSession();
    const cookies = (await client.send('Network.getAllCookies')).cookies;

    await page.setCookie(...cookies);
    const localStorage = await page.evaluate(() => Object.assign({}, window.localStorage))

    const html = await page.content();
    const $ = cheerio.load(html);

    const tiles = $('.result-list__listing');

    

    tiles.map( async (i, item)   =>  {
      let link = $(item).find('a.result-list-entry__brand-title-container').attr('href');

      if (link.includes("expose")) {
        link = baseURL+link
      }
      console.log(link)
  });
    await page.waitForTimeout(10000)
    }
    await browser.close()

})
EN

回答 1

Stack Overflow用户

发布于 2022-10-10 02:33:34

您同时发出10个请求,因为您使用的是一个传统的循环:

代码语言:javascript
运行
复制
for(var p=1; p <= 10;  p++)

因此,该网站适当地有一些类似的速率限制,以防止ddos攻击,这就是为什么你被发现为机器人。

使用ES6,您可以请求10次,但顺序如下:

代码语言:javascript
运行
复制
for (let p of [...Array(10).keys()] ){
    // execute your request here
}

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73981191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档