我目前正在为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软件包,以验证我是否已正确登录,并且浏览器打开到登录屏幕,并且已写入:请输入电子邮件地址
我希望我的浏览器可以在登录帐户的情况下打开主页。
谢谢
答案 0 :(得分:4)
虽然我无法为您的原始问题提供答案,但我可以告诉您您的行为违反了LinkedIn's software extensions policy。
为了保护我们会员的数据和我们的网站,我们不允许使用任何第三方软件,包括“抓取工具”,漫游器,浏览器插件或浏览器扩展程序(也称为“附加组件”) ”),它会刮擦,修改LinkedIn网站上的外观或自动进行活动。
在这里要小心。不仅许多网站都采用了防止刮取数据的方法,而且众所周知(其中包括LinkedIn)某些方法还会使开发人员对这种事情提起诉讼。
要以安全,合法的方式来做您要做的事情,请查看LinkedIn's API page。