我试图爬过craiglist的论坛类别。组织机构(https://forums.craigslist.org/).我的蜘蛛:
class CraigslistSpider(scrapy.Spider):
name = "craigslist"
allowed_domains = ["forums.craigslist.org"]
start_urls = ['http://geo.craigslist.org/iso/us/']
def error_handler(self, failure):
print failure
def parse(self, response):
yield Request('https://forums.craigslist.org/',
self.getForumPage,
dont_filter=True,
errback=self.error_handler)
def getForumPage(self, response):
print "forum page"
我通过错误回调收到以下消息:
[失败实例:Traceback:: /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py: 455:回调 /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py:563:_startRunCallbacks /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py:649:_runCallbacks /usr/local/lib/python2.7/site-packages/twisted/internet/<--plhd#######################################################################################################################################process_request /usr/local/lib/python2.7/site-packages/twisted/internetdefer.py:649_runCallbacks /usr/local/lib/python2.7/site-packages/scrapy/downloadermiddlewaresrobotstxt.py:46process_request_2]
但我只有在Craigslist的论坛部分才有这个问题。这可能是因为论坛部分的https与网站的其他部分相反。所以,不可能得到回应。。。
一个主意?
我想你正在处理robots.txt
。试着运行你的蜘蛛
custom_settings = {
"ROBOTSTXT_OBEY": False
}
您也可以使用命令行设置来测试它:scrapy抓取craigslist-sROBOTSTXT_OBEY=False
。
我发布了一个我找到的解决方案来解决这个问题。
我使用了urllib2库。看:
import urllib2
from scrapy.http import HtmlResponse
class CraigslistSpider(scrapy.Spider):
name = "craigslist"
allowed_domains = ["forums.craigslist.org"]
start_urls = ['http://geo.craigslist.org/iso/us/']
def error_handler(self, failure):
print failure
def parse(self, response):
# Get a valid request with urllib2
req = urllib2.Request('https://forums.craigslist.org/')
# Get the content of this request
pageContent = urllib2.urlopen(req).read()
# Parse the content in a HtmlResponse compatible with Scrapy
response = HtmlResponse(url=response.url, body=pageContent)
print response.css(".forumlistcolumns li").extract()
有了这个解决方案,您可以在一个有效的Scrapy请求中解析一个好的请求,并使用这个普通方法。可能有一种更好的方法,但这种方法是有效的。
忽略域名 您可能要从mitmproxy的拦截机制中免除部分流量的主要原因有两个: 证书固定:使用证书固定保护某些流量, 而mitmproxy的拦截会导致错误。例如,如果mitmproxy处于活动状态,则Twitter应用程序,Windows Update或Apple App Store无法工作。 便利性:您实际上并不关心某些流量,而只是希望它们消失。请注意,在这里,mitmproxy的Limit选
使用ESLint是否可以忽略整个目录的一个特定规则? 在我的例子中,我想忽略为一个名为的目录
我有一个游戏角色,它位于一个棱柱形关节的中心,只能垂直移动(跳跃)。在初始化时,我在屏幕上加载各种游戏障碍,当“产生”时,这些障碍会从屏幕外向角色移动。最好我想用cocos2d位置更新来控制游戏障碍运动的重新定位,而不是box 2d速度控制。 基本上,我希望我的游戏角色能对游戏障碍做出反应,但我不希望游戏障碍对游戏角色做出反应,我希望能够在box 2d之外改变游戏障碍的位置。 我试着只更新游戏角色
问题内容: 我正在使用以下选项 在bash脚本中停止执行错误。我有大约100行脚本正在执行,并且我不想检查脚本中每一行的返回码。 但是对于一个特定的命令,我想忽略该错误。我怎样才能做到这一点? 问题答案: 解决方案: 例: 将永远不会打印。 另外,我想补充一点,当打开时,如果管道中的命令之一具有非零退出代码(关闭该命令必须是最后一个),shell认为整个管道具有非零退出代码就足够了。