Kotlin采集美团商家信息 同行竞争价格监控

“南方小土豆”挤爆哈尔滨旅游市场,一个冬天让哈尔滨火出了圈,让全国观众看见了不一样的逆向旅游热,虽说我心驰神往,但是无奈加班敲代码,连休息的时间都没有。前段时间我通过用java写了一个美团爬虫程序,今天我 利用java的Kotlin库来写个美团商家爬虫,监控同行价格信息,并做出对比,了解同行竞争对手的信息。

Kotlin采集美团商家信息 同行竞争价格监控_第1张图片

爬虫程序的代码和步骤如下:

import java.net.URLConnection
import java.util.*

fun main(args: Array<String>) {
    val proxyHost = "duoip" // 代理服务器地址
    val proxyPort = 8000 // 代理服务器端口
    val url = URL("meituan") // 爬取的网址
    val proxyHost= "提取免费ip" // jshk.com.cn/mb/reg.asp?kefu=xjy&csdn
    val proxy = Proxy(Proxy.Type.HTTP, java.net.InetSocketAddress(proxyHost, proxyPort))
    val connection = URL(url).openConnection()
    connection.setRequestProperty("Proxy-Connection", "Keep-Alive")
    connection.setRequestProperty("User-Agent", "Mozilla/5.0")
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
    connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6")

    val cookieParams = connection.getHeaderFields().get("Cookie").split(",")
    if (cookieParams.isNotEmpty()) {
        connection.setRequestProperty("Cookie", cookieParams.joinToString("; "))
    }

    connection.connect()
    connection.responseCode
}

每行代码的解释如下:

1、val proxyHost = "duoip":指定代理服务器的地址为 duoip

2、val proxyPort = 8000:指定代理服务器的端口为 8000

3、val url = URL("meituan"):指定要爬取的网址为 meituan

4、val proxy = Proxy(Proxy.Type.HTTP, java.net.InetSocketAddress(proxyHost, proxyPort)):创建一个代理对象,指定代理类型为 HTTP,代理地址为 duoip,代理端口为 8000

5、val connection = URL(url).openConnection():创建一个 URLConnection 对象,指定要连接的网址为 meituan

6、connection.setRequestProperty("Proxy-Connection", "Keep-Alive"):设置请求头的 “Proxy-Connection” 为 “Keep-Alive”,表示连接应该在请求完成后保持打开状态。

7、connection.setRequestProperty("User-Agent", "Mozilla/5.0"):设置请求头的 “User-Agent” 为 “Mozilla/5.0”,表示客户端使用的浏览器类型。

8、connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"):设置请求头的 “Content-Type” 为 “application/x-www-form-urlencoded”,表示请求主体的类型。

9、connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6"):设置请求头的 “Accept-Language” 为 “zh-CN,zh;q=0.8,en;q=0.6”,表示客户端接受的语言。

10、val cookieParams = connection.getHeaderFields().get("Cookie").split(","):获取响应头中的 “Cookie”,并以 “,” 分割,得到一个字符串数组。

11、if (cookieParams.isNotEmpty()) { connection.setRequestProperty("Cookie", cookieParams.joinToString("; ")) }:如果 “Cookie” 不为空,设置请求头的 “Cookie” 为字符串数组中的元素,以 "; " 分隔。

12、connection.connect():建立连接。

13、connection.responseCode:获取服务器返回的状态码。

上面就是全部的代码内容了,介绍的很详细,也许有一些不完善的地方,欢迎大佬随时指正,不说了,已经买好了去哈尔滨的机票了,趁着热度未减,我也当一回南方的小土豆,看看美丽的哈尔滨冰雪世界。

你可能感兴趣的:(kotlin,python,爬虫,开发语言,代理模式,java,南方小土豆)