【问题标题】:LinkedIn Scraping Multiple PagesLinkedIn 抓取多个页面
【发布时间】:2020-02-20 20:20:56
【问题描述】:

我知道是否允许抓取 LinkedIn 存在讨论;但来自以下文章: https://www.forbes.com/sites/emmawoollacott/2019/09/10/linkedin-data-scraping-ruled-legal/#787286c31b54

我认为可以肯定地说,抓取来自 LinkedIn 的公开数据是合法的。

现在,我正在尝试在特定地区搜索特定职位的职位搜索。 到目前为止一切顺利,除了抓取的作业数量限制为 25 个之外,一切正常。

我正在尝试使用以下技巧: 在 URL 中,我传递了一个关键字 &start=X X 从 0 到 25、50 等等。

在浏览器中,这使我可以转到下一页视图并从那里提取作业。 但是,使用 scrapy 这个方法是行不通的。

代码如下:

res = requests.get('https://www.linkedin.com/jobs/search/?keywords={}&location={}&start=25'.format(job, location))

response = TextResponse(res.url, body=res.text, encoding='utf-8')

print("processing:" + response.url)

输出:

处理中:https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=0

即使我将其硬编码为 25(第 2 页),它也会将其设置为 0。

你知道如何解决这个问题吗?

【问题讨论】:

  • “在浏览器中”是什么意思?我已经在 Google Chrome 上尝试过,如果您指定 start=some_number,它会将您重定向到 start=0。您能否描述一下您在浏览器中从 25 开始可视化结果所采取的步骤?
  • 对我来说不是,还有谷歌浏览器。我只是复制此链接,例如:
  • 你具体看到了什么。当您向下查看更多职位时,您看到的是页码还是“点击查看更多职位”?
  • 是的,我看到了更多的工作,但在我的情况下它没有任何作用,如果我将 url 更改为 start=25,它会将我重定向到 start=0。

标签: search scrapy linkedin


【解决方案1】:

只需在 scrapy shell 上使用 REDIRECT_ENABLED=0 设置禁用 RedirectMiddleware。

scrapy shell -s REDIRECT_ENABLED=0 "https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=75"

_

2019-10-24 21:50:09 [scrapy.core.engine] DEBUG: Crawled (303) <GET https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=75> (referer: None)
[s] Available Scrapy objects:
[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    <scrapy.crawler.Crawler object at 0x0684AB30>
[s]   item       {}
[s]   request    <GET https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=75>


In [2]: fetch('https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=50')
2019-10-24 21:56:39 [scrapy.core.engine] DEBUG: Crawled (303) <GET https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=50> (referer: None)

In [3]: fetch('https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=100')
2019-10-24 21:56:49 [scrapy.core.engine] DEBUG: Crawled (303) <GET https://www.linkedin.com/jobs/search/?keywords=Data+Scientist&location=Brussels&start=100> (referer: None)

例如,如果您希望重定向中间件忽略 301 和 302 响应(并将它们传递给您的蜘蛛),您可以这样做:

class MySpider(CrawlSpider):
    handle_httpstatus_list = [301, 302]

此中间件根据响应状态处理请求重定向。 https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#module-scrapy.downloadermiddlewares.redirect

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多