ChatGPT做爬虫的第一步

Posted 牙叔教程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ChatGPT做爬虫的第一步相关的知识,希望对你有一定的参考价值。

做爬虫就是搞数据, 专业的人做专业的事, ChatGPT阅虫无数, 搞个小爬虫, So Easy!

我知道可以百度到下载图片的代码, 但是我不想百度了, 一切交给ChatGPT

你只需要问他: 怎么用Nodejs下载图片?

其中,url是图片的地址,filePath是保存图片的本地路径。使用https模块发送GET请求获取图片,然后使用fs模块创建可写流并将图片写入本地文件。

它在代码后面还带上了注释, 你问其他人能享受到这个待遇吗?

代码我测试过了, 正常可用.

界面怎么这么素

因为ChatGPT老要登录, 登录太麻烦了, 所以就写了个非常简单的网页, 直接调用ChatGPT的API; 如果你要我写的网页, 公众号回复 api网页

自己写, 自己用, 比较放心, 不用担心泄露apiKey;

别人的网页, 别人的app, 把你的号整封了咋弄?

函数封装

这是我自己封装的函数

function downloadImg(imgUrl) 
  let url = "https://xxx.xxx";
  const filePath = "image.jpg";

  https.get(imgUrl, (res) => 
    res.pipe(fs.createWriteStream(filePath));
    console.log("下载完成");
  );

这个用的是http回调, 不好使, 我就让ChatGPT给我改成await的那种

口令是: 把上面的下载图片代码, 改成await的形式

你只需要说一句话,

你想到的, 你没想到的, 都给你整的明明白白的, 小小爬虫第一步, 走的稳稳当当

还用的着百度?

大可不必

用不了GPT怎么办?

可以用 谷歌的Bard

也可以用 微软的NewBing

C#开发学习人工智能的第一步

脚本之家

你与百万开发者在一起

C#开发学习人工智能的第一步

C#开发学习人工智能的第一步

C#开发学习人工智能的第一步

作者 | kiba518

出品 | 脚本之家(ID:jb51net)

C#开发学习人工智能的第一步
前言
C#开发学习人工智能的第一步

作为一个软件开发者,我们除了要学会复制,黏贴,还要学会调用API和优秀的开源类库。

也许有人说C#做不了人工智能,如果你认可这种想法,那说明你的思想还是狭隘的。

做不了人工智能的不是C#这种语言,而是你,我这种普通的程序员。

做人工智能需要一定的学历背景,一定的数学基础和公司专项的资源供给;而这种机缘小之又小,你我既然是普通的程序员,就必然与此无缘。

但在人工智能如日中天的当下,接触深度学习是必然会发生的事情,所以我们要做的就是,学会调用相关的类库。

现在,让我们迈出C#学习人工智能的第一步,通过调用Affdex来锁定图片中人物的面部,然后将其截取出来。

C#开发学习人工智能的第一步
准备工作
C#开发学习人工智能的第一步

首先,我们需要先访问官网下载Affdex的Sdk。

在官网找中找到下载Affdex的Sdk的地方也是个挺困难的事。。。所以下载链接如下:

下载Affdex_Sdk网址:
https://knowledge.affectiva.com/docs/getting-started-with-the-emotion-sdk-for-windows#section-2-import-into-your-application

进入网页后,向下拉动滚动条,找到到下图所示位置,点击Download进行下载。

C#开发学习人工智能的第一步

下载完成后得到Sdk,如下图:

C#开发学习人工智能的第一步

下面,我们双击进行安装,不过安装SDK有一些限制,需要预先安装NET Framework4.0和C++ 2015。如果电脑里已经安装了,就不必担心了;如果安装的是C++2015-2017这类型的,则需要卸载了,重新安装C++2015的版本,否则Affdex的SDK将安装失败。

安装完成后,我们去安装目录找到Affdex.dll,affdex-native.dll,tensorflow.dll三个文件,如下图:

C#开发学习人工智能的第一步

我们先将它们复制出来,等待使用。

简单的介绍一下,这三个类库中,Affdex.dll是可以被C#项目直接引用的,而另外两个文件是Affdex.dll的依赖文件;也就是说,affdex-native.dll,tensorflow.dll需要在生成时,输出到运行目录下。

有经验的朋友想必已经发现了,这里有个类库名叫tensorflow.dll,tensorflow是什么啊?稍微百度一下大家就会了解了,它是专门来做深度学习的。

也就是说Affdex是支持深度学习的。

----------------------------------------------------------------------------------------------------

现在我们来学习Affdex的使用。

首先我们新建一个WPF项目,然后引用Affdex.dll。

然后将项目的运行平台设置为64位,因为,这样处理图片的速度能快一点,如下图:

C#开发学习人工智能的第一步

在Affdex中我们可以发现四个探头—VideoDetector,PhotoDetector,FrameDetector,CameraDetector。

在这里我们要处理的是图片,所以我们选择PhotoDetector,下面我们创建一个PhotoWindow.Xaml页面来使用PhotoDetector处理图片。

C#开发学习人工智能的第一步
代码实现
C#开发学习人工智能的第一步

首先,我们定义一个PhotoDetector的属性,用于处理图片。

然后我们在构造函数中对他进行实例化,代码如下:

 
   
   
 
  1. private Affdex.PhotoDetector Detector { get; set; }

  2. public PhotoWindow()

  3. {

  4. InitializeComponent();

  5. uint maxNumFaces = 1;//最多识别图片中几张脸

  6. Detector = new Affdex.PhotoDetector(maxNumFaces, Affdex.FaceDetectorMode.SMALL_FACES);

  7. Detector.setImageListener(this);

  8. Detector.setProcessStatusListener(this);

  9. Detector.start();

  10. }

在上述代码中可以看到,除了初始化PhotoDetector,我们还做了一个图片监听设置setImageListener,那么图片监听是干什么的呢?

很简单,图片被PhotoDetector处理完,我们需要知道图片处理结果呀,而这个图片监听正是是用来返回图片处理结果的。

可以看到图片监听设置的入参是this,也就是说,需要把图片的处理结果返回给当前页面。

如果就这样写是会编译报错的,会提示setImageListener的入参错误。

我们查看setImageListener的入参,发现它的入参是一个ImageListener接口,即,setImageListener的入参是一个要实现了ImageListener接口的类。

到这里,我们就都明白了,现在我们让当前PhotoWindow.xaml窗体继承接口ImageListener,并实现接口ImageListener内的方法。

 
   
   
 
  1. public partial class PhotoWindow : Window, Affdex.ImageListener

  2. ===========================================================================

  3. public void onImageCapture(Affdex.Frame frame)

  4. {

  5. }

  6. public void onImageResults(Dictionary<int, Face> faces, Affdex.Frame frame)

  7. {

  8. }

如上述代码所示,在我们实现的接口onImageResults里有两个参数:faces、frame。

其中faces是最重要的,这里包含Affdex分析图片的结果。

----------------------------------------------------------------------------------------------------

现在,Affdex的配置代码已经写完了,我们可以把图片读取出来调用Affdex处理了。

 
   
   
 
  1. public PhotoWindow()

  2. {

  3. InitializeComponent();

  4. uint maxNumFaces = 1;//最多识别图片中几张脸

  5. Detector = new Affdex.PhotoDetector(maxNumFaces, Affdex.FaceDetectorMode.SMALL_FACES);

  6. Detector.setImageListener(this);

  7. Detector.start();


  8. byte[] bytes = FileHelper.FileToBytes(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "timg.jpg"));

  9. BitmapSource bitmapSource = ImageHelper.BytesToBitmapImage(bytes);

  10. var w = bitmapSource.Width;

  11. var h = bitmapSource.Height;

  12. var stride = bitmapSource.Format.BitsPerPixel * (int)w / 8; //计算Stride

  13. byte[] byteList = new byte[(int)h * stride];

  14. bitmapSource.CopyPixels(byteList, stride, 0);

  15. Affdex.Frame frame = new Affdex.Frame((int)w, (int)h, byteList, Affdex.Frame.COLOR_FORMAT.BGRA);

  16. Detector.process(frame);

  17. }

如上述代码所示,我们在启动了Detector后,读取了一个人物图片,然后把人物图片的像素数组解析出来,生成一个Frame;这个Frame是Affdex的类,用于保存图像数据信息。

最后,我们把生成的Frame对象,扔给Detecotor的Process方法处理。

Detecotor处理完成后,会触发onImageResults方法。

在onImageResults方法里,入参faces包含了处理结果。

现在我们使用faces里的内容,来定位图片中人物面部的位置。

 
   
   
 
  1. public void onImageResults(Dictionary<int, Face> faces, Affdex.Frame frame)

  2. {

  3. Face face = null;

  4. if (faces != null && faces.Values != null && faces.Values.Count() > 0)

  5. {

  6. face = faces.Values.First();//因为我们的Detector只识别了一个脸,所以这里最多只有一个数据

  7. }

  8. int top = (int)face.FeaturePoints.Min(r => r.X);

  9. int left = (int)face.FeaturePoints.Min(r => r.Y);

  10. int bottom = (int)face.FeaturePoints.Max(r => r.X);

  11. int right = (int)face.FeaturePoints.Max(r => r.Y);

  12. ImageHelper.cutPicture(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "timg.jpg"),

  13. left, top, right , bottom - top);

  14. }

如上述代码所示,我们在onImageResults里做了【最简单】人物面部坐标定位,并进行了剪切。

处理结果如下图所示:

C#开发学习人工智能的第一步

C#开发学习人工智能的第一步
结语
C#开发学习人工智能的第一步

事实上,上面介绍的只是Affdex最基础调用,而且,这里并没有使用到深度学习的内容,只是简单的扫描和分析。

想要使用深度学习的内容还需要进一步学习该开源控件,不过,万事开头难,我们现在已经迈出了第一步。

----------------------------------------------------------------------------------------------------

到此C#开发学习人工智能的第一步就完成了。

代码已经传到Github上了,欢迎大家下载。

声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。

写的不错?赞赏一下

C#开发学习人工智能的第一步

长按扫码赞赏我


C#开发学习人工智能的第一步

● C#开发学习人工智能的第一步 

● C#开发学习人工智能的第一步 

●  

● 

● 

以上是关于ChatGPT做爬虫的第一步的主要内容,如果未能解决你的问题,请参考以下文章

普通人如何使用ChatGPT接单挣钱-第一弹

ChatGPT方法论“BORE“

Python和ChatGPT在一起了

Python和ChatGPT在一起了

ChatGPT说:如何利用ChatGPT变现?躺着赚钱不是梦。

微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信