美文网首页程序员
那些年用xpath玩爬虫时遇到的坑

那些年用xpath玩爬虫时遇到的坑

作者: 部落大圣 | 来源:发表于2018-06-17 00:38 被阅读61次

    申明:环境python3.6

    到目前为止我一直用的xpath方式爬取页面数据。
    我所采取的方法是直接利用xpath爬取其中一条,判断是否能采取这种方法。
    目前遇到的坑有,总结一下

    1,html结构中标签中存在一些加密乱码

    解决方法是,从新分析xpath路径。绕过这个根节点,从下一级找一个新的根节点


    乱码

    2,URL精简

    在爬取多个页面的时候我们需要从URL中找到规律,再利用遍历达到多个页面爬取的目的。例如

    url='https://www.liepin.com/zhaopin/?ckid=542ae5fa5cb41481&fromSearchBtn=2&degradeFlag=0&init=-1&key=PHP&headckid=542ae5fa5cb41481&d_pageSize=40&siTag=L-w5IwSlwjrBONoihH-bfA~fA9rXquZc5IkJpXC-Ycixw&d_headId=ba38c449642f2b4158b2683fc9f874c1&d_ckId=ba38c449642f2b4158b2683fc9f874c1&d_sfrom=search_unknown&d_curPage=0&curPage=1'
    

    之前我们在学习GET传递参数的时候,知道URl+?+参数1&参数2+.....&参数n传递参数。这里我们通过对比两页的URL,把多余的传参删除,留下非常简练的链接,当然必须包括keyword,和分页如file= 1等
    对上面的URL简化

    https://www.liepin.com/zhaopin/?key=PHP&curPage=1
    

    keyword:PHP,分页curPage = 1,对分页keyword,进行遍历拼接。达到了多页爬取的目的

    3,空格问题

    由于网页结构问题,网页中回家如&ndsp的空格字符,你爬取的数据会左右开弓,非常凌乱。整体美观受到影响。解决方法是strip()函数"itemname.strip()"

    4,取到的第一个值为空

    当时是爬取51job,取到的前三个字段为空,在插入excel时会出现三个空字段,分析发现是div标签,第一个字段是div[4]。当时想的办法是从divp[4]开始取值。失败,最后解决方法是还是利用strip函数判断字段是否为空,不为空取出数据插入list。

    if title.strip() and work.strip(): # 判断是否为空
       data= []
       data.append(tltle)
       data.append(work)
    

    5,编码问题

    从开始接触,我们习惯了默认的UTF-8编码。在突然遇到不同的编码方式如'gbk',你爬取的字段就是一堆乱码


    乱码
    解决方法是设置编码,encoding = '编码方式'(网页的编码方式通过F12开发者工具查看Element下的head里找到charset =' ' 编码查找
    response.encoding = 'utf-8'  # 设置编码方式
    
    你想要的

    6,爬取字段为空

    这个是我,一直跑火车,跑习惯了。红灯乱闯。
    我没有加headers,也就是当前网页的绿灯。这个是真的没有想到,之前一直是以为headers 是模仿浏览器才去用。所以往往第一步就把我挡在了外面。
    所以在爬取不管哪个网站你最好是加上headers,遵守交通规则。才能爬到你想要的数据

        'Host':'www.lagou.com',
        'Referer':'https://wx.zsxq.com/dweb/',
        'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/'
                     '67.0.3396.87 Safari/537.36'
    }
    url = 'https://www.lagou.com/zhaopin/Python/3'
    response = requests.get(url=url, headers=headers)
    

    感言

    吃亏是福啊,在python的路上多吃点亏没错

    相关文章

      网友评论

        本文标题:那些年用xpath玩爬虫时遇到的坑

        本文链接:https://www.haomeiwen.com/subject/yqlieftx.html