c#抓取网页数据(PowerQuery与GET方法有什么区别呢?(一))

优采云 发布时间: 2022-01-16 06:11

  c#抓取网页数据(PowerQuery与GET方法有什么区别呢?(一))

  我之前写过很多关于 Power Query 网络爬取的教程。根据网络数据传输的方式,文章中的那些爬取方式都是通过GET方式获取的,那么POST和GET方式有什么区别呢?

  这是W3C官网的内容,请参考:

  

  GET 和 POST 方法都可用于向服务器发起请求。至于服务器支持哪种方式,我们需要通过谷歌浏览器查看:

  GET方法用于在浏览器地址提交查询条件,如下所示:

  

  GET方法下面通常是查询条件字符串Query String Parameters:

  

  这样的 URL 非常标准,没有各种问号、等号和连字符,通常是 POST 方法:

  

  POST 方法下面是表单数据:

  

  很多时候网站同时支持两种查询方式:

  

  上面的 网站 是两种方法都支持的 网站。

  最后,GET和POST这两种方式在传输数据时最大的不同就是编码方式:

  让我们回到 Power Query 爬行。之前不明白如何实现POST提交数据爬取。看了几篇文章的文章,基本上就是用一个函数实现GET和POST爬取。,唯一的区别在于HEADER头文件的写法和查询条件的编码。

  GET方法查询:

  让

  url="", //网址

  headers=[Cookie=""], //标题

  query=[], //查询字符串参数

  web=Text.FromBinary(Web.Contents(url,[Headers=headers,Query=query]))

  在

  网络

  上面的代码可以应用于大多数 GET 方法站点,其中:

  

  Web.Contents(url,[Headers=headers,Query=query])

  当然,很多时候,我们匿名抓取数据的时候,不需要登录或者cookie,也不需要写头文件。我们直接将页码等查询条件添加到一长串url中,省略Web.Contents函数。第二个参数,这就是为什么我说上一句查询都是GET查询。

  POST 查询:

  我们主要讲的是这个POST方法的获取。与GET方式最大的不同就是头文件headers不能省略,所以必须使用Web.Contents函数的第二个参数。我们将通过一个示例来说明如何编写代码来执行 POST 请求:

  第一步:还是做网站分析

  首先,我们确保这个 网站 可以使用 POST 方法来抓取数据:

  

  然后查看头文件中的关键字:

  

  其实我并没有用用户名和密码网站登录,所以这个cookie可以用,但是这个:

  内容类型:application/x-www-form-urlencoded;字符集=UTF-8

  它必须在 POST 方法中使用,并标有钥匙符号。

  然后我们看一下表单的内容:

  

  在返回查询结果之前,我们需要将上述查询条件提交给服务器。以上格式是为了方便查看。您可以将其理解为一种记录格式。您按 View Source 以显示源代码:

  

  我画的部分是“离婚登记号”,这是一个普通的URI编码格式,带有很多百分号。

  通过这些分析,我们可以继续下一步。

  第 2 步:尝试捕获

  先放代码,然后一行一行的说:

  

  让

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线