因为好久没写过爬虫了,这次单位有需求要爬取几TB的资料,在测试过程中遇到一些问题,总结下来,未来写爬虫的时候可以避坑。
问题1:JSON Object Key不存在。规范的情况下,返回的JSON对象数组应该是统一的,即使数据不存在也应该是空字符串或者null或者别的什么,但是这个系统过于老旧,编码也乱七八糟不规范,导致个别数据不存在的时候,压根不返回这个Key。
解决方案:
if 'key' not in item: continue
只需要判断一下这个key在不在item里,不在直接跳出此循环。
问题2:保存的文件名/路径有非法字符。在Windows下,创建的文件夹/文件时,文件名不能包含以下字符:
\ / : * ? " < > |
因此,如果文件名/路径名中有此些字符,需要替换掉,这里提供一个替换方法:
def string_format(str: string, replacement: string=''): illegal_words = ['\\', '/', '*', '?' '"', '<', '>', '|'] for word in illegal_words: if word in str: str = str.replace(word, replacement) return str
参数说明:str 要格式化的字符串,replacement 将非法字符替换成指定内容,不填写则替换空字符串。
发表回复