网页搜罗-我需要登录LinkedIn才能进行网络抓取(抓取)

时间:2019-05-27 19:39:48

标签: python scrapy web-crawler linkedin

我目前正在为Linkedin创建一个网络抓取工具,但是LinkedIn阻止了我的机器人抓取数据,因为我没有登录任何帐户。我的目标基本上是取消公司提供的任何工作机会,但我的问题主要是在代码的登录方面。

我正在使用scrapy和formrequest的Python 3.X。

因此,我在网上寻找解决方案,formrequest软件包似乎是我需要的答案。但是,经过几次尝试,它仍然无法正常工作。

import scrapy
from scrapy.http import FormRequest
from scrapy.utils.response import open_in_browser
from ..items import LinkedinItem


class LinkedinSpiderSpider(scrapy.Spider):
    name = 'linkedin_spider'
    start_urls = ['https://www.linkedin.com/login']

    def parse(self, response):
        token = response.css('form input::attr(value)').extract_first()
        print(token)
        return FormRequest.from_response(response, formdata={
            'csrf_token': token,
            'username': 'XXX@gmail.com',
            'password': 'XXX'
        }, callback=self.start_scraping)

    def start_scraping(self, response):
        open_in_browser(response)
        items = LinkedinItem()
        all_div_quotes = response.css('div.quote')

        for quotes in all_div_quotes:
            Job_offers = response.css('.disabled').css('::text').extract()
            company = response.css('.job-card-search__company-name-link').css('::text').extract()
            information = response.css('.job-card-search__description-snippet').css('::text').extract()

            items['Job_offers'] = Job_offers
            items['company'] = company
            items['information'] = information

            yield items

我添加了open_in_browser软件包,以验证我是否已正确登录,并且浏览器打开到登录屏幕,并且已写入:请输入电子邮件地址

我希望我的浏览器可以在登录帐户的情况下打开主页。

谢谢

1 个答案:

答案 0 :(得分:4)

虽然我无法为您的原始问题提供答案,但我可以告诉您您的行为违反了LinkedIn's software extensions policy

  

为了保护我们会员的数据和我们的网站,我们不允许使用任何第三方软件,包括“抓取工具”,漫游器,浏览器插件或浏览器扩展程序(也称为“附加组件”) ”),它会刮擦,修改LinkedIn网站上的外观或自动进行活动。

在这里要小心。不仅许多网站都采用了防止刮取数据的方法,而且众所周知(其中包括LinkedIn)某些方法还会使开发人员对这种事情提起诉讼。

要以安全,合法的方式来做您要做的事情,请查看LinkedIn's API page