• 浅谈python爬取58同城,大众点评这两个网站


    1.爬取58同城租房网遇到的坑:我爬了一页数据被封了ip,此时的我是非常的不爽,才十几条数据就封我,于是我就想着一定得找ip代理来解决这个问题,后面就写了个ip代理去弄,另外把之前头部信息ua改成了ua池,然后再爬取58同城,瞬间爬到了数据。头部信息如下:

    from fake_useragent import UserAgent
    import random
    
    # ua = UserAgent(use_cache_server=False)
    ua =UserAgent()
    hd ={
        "User-Agent":ua.random
    }  

    爬取58成功搞定

    2.爬取大众点评景点名称时遇到的坑:首先headers一定得加上,注意:refer很重要,一定得写对。另外的话加不加代理其实都没啥影响,只需要每次获取cookie就可以了。

    头部信息headers如下:

    hd_xq = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36',
      'Cookie':'s_ViewType=10; _hc.v=75fb4106-ab4f-b6a4-2415-b2aa30583f05.1524064271; _lxsdk_cuid=162d94f3c0ec8-0ed6c642bd8a38-b353461-100200-162d94f3c0fc8; _lxsdk=162d94f3c0ec8-0ed6c642bd8a38-b353461-100200-162d94f3c0fc8; _lxsdk_s=162d94f3c10-dc5-32f-fc3%7C%7C155',
      'Referer':'http://www.dianping.com/shenzhen/ch35/g33831', 'Connection':'keep-alive'
    }

    获取cookie的方法:

    def get_cookies():
        from urllib import request
        from http import cookiejar
         #声明一个CookieJar对象实例来保存cookie
        cookie = cookiejar.CookieJar()
        #利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
        cookie_support = request.HTTPCookieProcessor(cookie)
        #通过CookieHandler创建opener
        opener = request.build_opener(cookie_support)
        #创建Request对象
        req1 = request.Request(url='http://www.dianping.com/shop/1705777',headers=hd_xq)
        response1 = opener.open(req1)
        html = response1.read().decode('utf-8')
        return html

    这样的话大众点评就可以顺利爬取了。

    另外大众点评的经纬度是高德的,如果你想转成百度的话,代码如下:

    #高德地图转百度地图
    def gcj02tobd09(lng, lat):
        """
        火星坐标系(GCJ-02)转百度坐标系(BD-09)
        谷歌、高德——>百度
        :param lng:火星坐标经度
        :param lat:火星坐标纬度
        :return:
        """
        z = math.sqrt(lng * lng + lat * lat) + 0.00002 * math.sin(lat * x_pi)
        theta = math.atan2(lat, lng) + 0.000003 * math.cos(lng * x_pi)
        bd_lng = z * math.cos(theta) + 0.0065
        bd_lat = z * math.sin(theta) + 0.006
        print(bd_lng)
        print(bd_lat)
        return [bd_lng, bd_lat]
    

      补充:经过一个礼拜的爬数据:针对网站:58,大众点评;总结如下:

    第一:58同城这个网站如果使用代理ip的话,换不换ua没有任何影响,换ua的话不使用ip代理的话就可能出现问题了,如链接超时了,404了等一系列错误。

    第二:大众点评这个网站就是个坑了,爬着爬着突然给你来个验证码,这时候要么你破解验证码,要么手动暂停程序再输入验证码,当然这边的话我不建议大家这么做太麻烦了。有人建议我说使用selenium去爬,我爬过,有时可以有时不行,当你爬不同的数据的时候貌似有不同的效果,所以建议大家使用唯一有效的办法就是自动添加cookie,并且使用代理这样的话基本大众点评上的所有数据你应该都可以爬下来,如果不使用代理的话,那就看运气吧,多运行几次数据也可以爬到,cookie一定得添加,不然拒绝你访问的。-----------------------------------最后的最后叫大家一个更简单的方法:爬安卓端数据。这样啥都可以解决,没毛病。(备注:有大佬发现我哪不对的话,或者有好的方法,还请给个建议,谢谢<>

    QQ:979352156)

  • 相关阅读:
    安装git工具在ubuntu系统
    Ubuntu 16.04安装JDK并配置环境变量-【小白版】
    【gRPC使用问题4】
    【gRPC使用问题3】生成出来无法识别Google.Api.AnnotationsReflection.Descriptor
    LNMP
    Centos下安装Mysql
    yum方式安装的Apache目录详解和配置说明
    Centos下 yum方式安装LAMP
    CentOS配置网易163 yum源
    Apache主配置文件httpd.conf 详解
  • 原文地址:https://www.cnblogs.com/fh-fendou/p/8892077.html
Copyright © 2020-2023  润新知