【爬虫问题】写LinkedIn爬虫时遇到的问题



  • 目的:获得该页列表中所有联系人的URL

    代码(利用了python提供的beatiful soup工具):

    url = "https://www.linkedin.com/vsearch/f?type=all&keywords=jun+hou&orig=GLHD&rsid=2008938481473492845485&pageKey=voltron_federated_search_internal_jsp&trkInfo=tarId%3A1473492889401&trk=global_header&search=Search"
    # 初始页
    page = urllib2.urlopen(url)
    # 'lxml' is a html parser
    soup = BeautifulSoup(page, 'lxml')
    soup.a['class'] = 'bd'
    print soup.a
    

    思路:登录账号后进入search页面,即初始页URL。然后找到联系人链接所属的tag,利用xpath插件定位到联系人链接所在的位置是<div class = 'bd'>,然后通过查找里面的<a>来获取URL

    结果:

    <a class="bd" href="https://www.linkedin.com/legal/user-agreement?trk=uno-reg-join-user-agreement" target="_blank">User Agreement</a>
    

    预期结果:

    • 下图为我想爬取的好友页面,正确的结果应该如蓝色高亮中tag <a>内显示的一样
      0_1473653185262_upload-a09214ba-8e5f-44d7-8624-72e5ff8e7f62

    问题:

    1. 这个结果是否说明是LinkedIn的反爬机制在起作用?
    2. 如果遇到反爬机制比较强的网站而想获得数据的话是否只能通过API?
    3. 周老师说都可以爬,把cookie等http的头抄上试试,不太懂是什么意思?
    4. 如果真的可以爬,代码应该怎么修改?

    谢谢~


  • cid:81:privileges:find

    @youne1012 hi 你好
    1、不是反爬机制,晚点我也试试哈
    2、api和html是一样的
    3、3&4 同1



  • @youne1012【技术问题】写LinkedIn爬虫时遇到的问题 中说:

    问题:

    1. 这个结果是否说明是LinkedIn的反爬机制在起作用?

    不是. 一般登录了以后网站会在浏览器的cookies里面存储一些信息(sessions等), 来验证你的身份. 当浏览器访问的时候, 自动会附上这些信息(credentials), 你用Python直接request不行, 是因为你没有附上这些信息.

    1. 如果遇到反爬机制比较强的网站而想获得数据的话是否只能通过API?

    否. 数据获取的方式, 一些网站有官方的API, 程序员可以直接获取; 爬虫的话, 一些网站有他们自己的AJAX API; 一些网站只是HTML, 两者都可以爬. 反爬机制的强弱, 和获取数据的途径没有必然联系.

    1. 周老师说都可以爬,把cookie等http的头抄上试试,不太懂是什么意思?

    参见一. 就是使用browser查看一下network里面request的headers等等, 将headers + cookies的值复制一下, 设置到python的request里面尝试一下的意思.

    1. 如果真的可以爬,代码应该怎么修改?

    谢谢~

    我没有非常常用过python的urllib2. 但是有一个非常普遍使用的http request库, 叫requests. 推荐使用. 设置headers的方法, 在这里; 设置cookies的方法, 在这里.



  • @周_宁奕 好的,谢谢老师,我也再试试



  • @兰_绛 非常感谢你的解释以及参考资料,我明白啦! :)



  • @youne1012 不客气!


 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待