【问题标题】:Scraping data out of facebook using scrapy使用 scrapy 从 facebook 中抓取数据
【发布时间】:2013-05-27 15:17:55
【问题描述】:

Facebook 上的新图表搜索让您可以使用查询令牌搜索公司的当前员工 - 当前 Google 员工(例如)。

我想通过 scrapy 抓取结果页面 (http://www.facebook.com/search/104958162837/employees/present)。

最初的问题是 facebook 只允许 facebook 用户访问信息,所以将我引导到 login.php。所以,在抓取这个 url 之前,我先通过 scrapy 登录,然后是这个结果页面。但即使该页面的 http 响应为 200,它也不会删除任何数据。代码如下:

import sys
from scrapy.spider import BaseSpider
from scrapy.http import FormRequest
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from scrapy.http import Request

class DmozSpider(BaseSpider):
    name = "test"
    start_urls = ['https://www.facebook.com/login.php'];
    task_urls = [query]

def parse(self, response):
return [FormRequest.from_response(response, formname='login_form',formdata={'email':'myemailid','pass':'myfbpassword'}, callback=self.after_login)]

def after_login(self,response):
    if "authentication failed" in response.body:
            self.log("Login failed",level=log.ERROR)
            return
    return Request(query, callback=self.page_parse)

def page_parse(self,response):

    hxs = HtmlXPathSelector(response)
    print hxs
    items = hxs.select('//div[@class="_4_yl"]')
    count = 0
    print items

我可能遗漏了什么或做错了什么?

【问题讨论】:

    标签: facebook web web-crawler scrapy


    【解决方案1】:

    问题是搜索结果(特别是 div initial_browse_result)是通过 javascript 动态加载的。 Scrapy 在这些操作之前接收页面,因此那里还没有结果。

    基本上,您有两种选择:

    如果您选择第一个选项,您应该分析页面加载期间的所有请求,并找出哪个负责获取您要抓取的数据。

    第二个非常简单,但肯定会起作用 - 您只需使用其他工具获取通过 js 数据加载的页面,然后将其解析为 scrapy 项目。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 2019-02-13
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      相关资源
      最近更新 更多