正如Apple 的这篇文章中所见,您可以从 OS Sierra 的命令行中使用以下内容重新映射密钥:
hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x700000054,
"HIDKeyboardModifierMappingDst":0x700000067
}]
}'
Run Code Online (Sandbox Code Playgroud)
是否可以仅将此更改分配给特定的键盘设备,例如,如果您想将一个设备映射到第二个的输出,但不影响第二个的功能?
该文章不再更新,并且似乎没有关于该命令如何工作的当前文档。
在"避免被禁止"标题下,Scrapy文档建议:
如果可能,请使用Google缓存来抓取网页,而不是直接点击网站
它是指http://www.googleguide.com/cached_pages.html,最近一次更新于2011年.
我试图这样做来刮一个网站,需要我无法绕过的验证码.但是,Google会创建同样的问题.
我使用这个中间件让蜘蛛留在Google缓存版本的链接上:
class GoogleCacheMiddleware(object):
def process_request(self, request, spider):
if spider.use_google_cache == True and 'googleusercontent' not in request.url:
new_url = 'https://webcache.googleusercontent.com/search?q=cache:' + request.url
request = request.replace(url=new_url)
return request
Run Code Online (Sandbox Code Playgroud)
在蜘蛛本身,我使用以下设置礼貌地抓取:
custom_settings = {
'AUTOTHROTTLE_ENABLE' :True,
'CONCURRENT_REQUESTS' : 2, # or 1
'DOWNLOAD_DELAY' : 8 # increased this to as much as 10
}
Run Code Online (Sandbox Code Playgroud)
我也尝试在原始网站和网站的Google缓存版本上使用Selenium.这有时会成功抓取几分钟并返回数据,但最终会登录https://support.google.com/websearch/answer/86640,其中指出Google会从您的计算机网络中检测到"异常流量",并且需要验证码继续进行.
看来Scrapy文档只是与Google的使用条款冲突,我是否正确?无论哪种方式,是否有推荐的方法来绕过验证码,或者尽管存在这种限制,仍然可以从网站的Google缓存中完成抓取?
更新,7-9-18:
当这个蜘蛛在一周或更长时间内运行几次时,它最终会产生完整或更全面的结果,显然是因为最初被抓取的URL在每次爬行时都会发生变化,并且在验证码开始之前就会成功.如果有人知道与文档一致的解决方案或者具体的解决方法.
Python 删除字符串中的所有空格问题的答案显示了从 Python 中的字符串中分别删除前导/结尾、重复和所有空格的不同方法。但是 strip() 会删除制表符和换行符,而 lstrip() 只会影响前导空格。使用 .join(sentence.split()) 的解决方案似乎也删除了 Unicode 空白字符。
假设我有一个字符串,在本例中是使用 Scrapy 从网站上抓取的,如下所示:
['\n \n ',
'\n ',
'Some text',
' and some more text\n',
' and on another a line some more text', '
']
Run Code Online (Sandbox Code Playgroud)
当我在其他上下文中使用文本时,换行符会保留文本的格式,但所有额外的空间都很麻烦。如何删除所有前导、结尾和重复的内部空格,同时保留换行符(除了任何 \r 或 \t 字符,如果有的话)?
我想要的结果(在加入各个字符串之后)将是:
['\n\n\nSome text and some more text\nand on another line some more text']
Run Code Online (Sandbox Code Playgroud)
没有提供示例代码,因为到目前为止我所尝试的只是上面引用的页面上的建议,这得到了我试图避免的结果。