2013-12-10 72 views
1

为了帮助我学习Python,我决定从ESPNFC网站的'live'页面(例如here)上截屏。使用Python/Scrapy/Urllib2进行屏幕截图似乎被屏蔽

它一直在努力,直到一天前,但最终排序了一些东西,我去测试它,我回来的唯一一条评论是[u'Commentary Not Available']。

有没有人有任何想法他们如何做到这一点,以及任何简单快捷的方法?我正在使用Scrapy/Xpath和Urllib2。

编辑//

for game_id in processQueue: 
    data_text = getInformation(game_id) 
    clean_events_dict = getEvents(data_text) 
    break 

不起作用一样

i = getInformation(369186) 
j = getEvents(i) 

在第一个样品,processQueue是在game_ids名单。是考虑到这些第一个脚本开始刮擦。这是在它有机会移动到另一个游戏之前打破的game_id

在第二个示例中,我使用单个游戏ID。

第一个失败,第二个失败,我完全不知道为什么。有任何想法吗?

+0

确定的值传递给第一个样品的第一次迭代是一样的价值观第二样品中通过?检查类型也是一样的,并且你没有混淆整数/字符串。 – halfer

+1

我喜出望外,你是对的。我不能相信我是这么一个白痴,不去检查我正试图去的网址。这不是一个字符串,它实际上是在url中的中间一个巨大的列表。谢谢你的帮助。 – user2073606

+0

嘿,伟大的东西'':-)。 – halfer

回答

0

有几件事情你可以试试,假设你仍然可以从浏览器访问数据。但请记住,网站运营商通常有权阻止您;这就是为什么那些依赖于单个网站的项目是一个有风险的主张。在这里,他们是:

  • 延迟每间几秒钟刮
  • 延迟几秒之间的每个刮
  • 在会话期间接受你刮会议
  • 运行JavaScript中的cookie(无法实现的随机数Scrapy据我所知)
  • 分享几个IP之间的拼抢负载范围

还有其他施特拉特吉斯其中,我一般认为,不太道德:

  • 修改您的用户代理字符串,使您的刮刀看起来像一个浏览器

suggest in this answer here是刮削器应设置服从的robots.txt。但是,如果您对您的刮板进行编程时表现良好,网站运营商将没有任何理由阻止您。最常见的错误,我在这个堆栈溢出的标签看到的仅仅是刮削器正在运行,过猛,他们意外导致服务的(未成年人)的拒绝。所以,请先放慢你的伤势,看看是否有帮助。

+0

我的第一个猜测是切换IP,然后更改用户代理。 –

+0

我试过用户代理的东西,并添加了一个延迟,但都没有达到预期的效果。请参阅编辑我刚刚找到的内容,但无法弄清楚。谢谢。 – user2073606