Scrapy+Selenium爬取中国裁判文书网文书实践与踩坑

版权申诉
5星 · 超过95%的资源 34 下载量 200 浏览量 更新于2024-09-11 6 收藏 319KB PDF 举报
在本文档中,作者分享了利用Python爬虫技术,结合Scrapy框架和Selenium模拟浏览器的方式爬取中国裁判文书网(<https://wenshu.court.gov.cn/>)上裁判文书的经历。作者起初尝试暴力解析网页结构,但意识到这并不适合这种复杂的动态网站,转而选择Scrapy作为主要框架。 Scrapy是一个强大的、基于Python的Web抓取框架,适用于处理静态和半静态网页。它提供了高效的数据提取功能,以及分布式爬虫支持,非常适合批量抓取和存储数据。与之相比,Pyspider虽然也有类似的功能,但由于其文档更新较慢且在处理连续页面问题上存在局限性,作者最终决定使用Scrapy。 在具体实施过程中,作者首先设置了Scrapy爬虫去抓取前两页的裁判文书,每页最多抓取15份文书,以减少不必要的页面跳转。同时,通过Selenium模拟浏览器操作,控制了页面加载时间和元素选择,确保了爬取的稳定性和效率。 爬虫遇到的主要挑战包括: 1. 解析详情页时,需处理返回的list类型对象,正确提取所需信息,并避免使用XPath或CSS选择器在list内继续操作。 2. 对于页面元素的显示延迟和超时设置,需要进行细致的调试和优化。 3. 数据清洗方面,针对文书主体内容中不同部分(如当事人、法院原由、判决结果)的不规则div标签结构,进行了灵活的处理。 4. 针对下载中间件的问题,通过设置meta字段来区分文书列表和详情页面,实现了有效的链接管理。 5. 确保spiders代码中的链接访问策略,设置"dont_filter"参数,防止因重复链接过滤导致的逻辑错误。 6. 考虑到页面链接的不变性,为了避免陷入无限循环,需要正确处理下一页的跳转逻辑。 这个案例展示了在复杂网站爬取中如何有效地运用Scrapy和Selenium,以及如何应对常见的爬虫问题和陷阱。通过实践学习,作者对自己的技术水平有了更深的认识,并提供了有价值的爬虫技巧供读者参考。
2019-01-10 上传
function getKey(cookie) { // var cookie = getCookie('vjkl5'); var arrFun = [makeKey_0, makeKey_1, makeKey_2, makeKey_3, makeKey_4, makeKey_5, makeKey_6, makeKey_7, makeKey_8, makeKey_9, makeKey_10, makeKey_11, makeKey_12, makeKey_13, makeKey_14, makeKey_15, makeKey_16, makeKey_17, makeKey_18, makeKey_19, makeKey_20, makeKey_21, makeKey_22, makeKey_23, makeKey_24, makeKey_25, makeKey_26, makeKey_27, makeKey_28, makeKey_29, makeKey_30, makeKey_31, makeKey_32, makeKey_33, makeKey_34, makeKey_35, makeKey_36, makeKey_37, makeKey_38, makeKey_39, makeKey_40, makeKey_41, makeKey_42, makeKey_43, makeKey_44, makeKey_45, makeKey_46, makeKey_47, makeKey_48, makeKey_49, makeKey_50, makeKey_51, makeKey_52, makeKey_53, makeKey_54, makeKey_55, makeKey_56, makeKey_57, makeKey_58, makeKey_59, makeKey_60, makeKey_61, makeKey_62, makeKey_63, makeKey_64, makeKey_65, makeKey_66, makeKey_67, makeKey_68, makeKey_69, makeKey_70, makeKey_71, makeKey_72, makeKey_73, makeKey_74, makeKey_75, makeKey_76, makeKey_77, makeKey_78, makeKey_79, makeKey_80, makeKey_81, makeKey_82, makeKey_83, makeKey_84, makeKey_85, makeKey_86, makeKey_87, makeKey_88, makeKey_89, makeKey_90, makeKey_91, makeKey_92, makeKey_93, makeKey_94, makeKey_95, makeKey_96, makeKey_97, makeKey_98, makeKey_99, makeKey_100, makeKey_101, makeKey_102, makeKey_103, makeKey_104, makeKey_105, makeKey_106, makeKey_107, makeKey_108, makeKey_109, makeKey_110, makeKey_111, makeKey_112, makeKey_113, makeKey_114, makeKey_115, makeKey_116, makeKey_117, makeKey_118, makeKey_119, makeKey_120, makeKey_121, makeKey_122, makeKey_123, makeKey_124, makeKey_125, makeKey_126, makeKey_127, makeKey_128, makeKey_129, makeKey_130, makeKey_131, makeKey_132, makeKey_133, makeKey_134, makeKey_135, makeKey_136, makeKey_137, makeKey_138, makeKey_139, makeKey_140, makeKey_141, makeKey_142, makeKey_143, makeKey_144, makeKey_145, makeKey_146, makeKey_147, makeKey_148, makeKey_149, makeKey_150, makeKey_151, makeKey_152, makeKey_153, makeKey_154, makeKey_155, makeKey_156, makeKey_157, makeKey_158, makeKey_159, makeKey_160, makeKey_161, makeKey_162, makeKey_163, makeKey_164, makeKey_165, makeKey_166, makeKey_167, makeKey_168, makeKey_169, makeKey_170, makeKey_171, makeKey_172, makeKey_173, makeKey_174, makeKey_175, makeKey_176, makeKey_177, makeKey_178, makeKey_179, makeKey_180, makeKey_181, makeKey_182, makeKey_183, makeKey_184, makeKey_185, makeKey_186, makeKey_187, makeKey_188, makeKey_189, makeKey_190, makeKey_191, makeKey_192, makeKey_193, makeKey_194, makeKey_195, makeKey_196, makeKey_197, makeKey_198, makeKey_199, makeKey_200, makeKey_201, makeKey_202, makeKey_203, makeKey_204, makeKey_205, makeKey_206, makeKey_207, makeKey_208, makeKey_209, makeKey_210, makeKey_211, makeKey_212, makeKey_213, makeKey_214, makeKey_215, makeKey_216, makeKey_217, makeKey_218, makeKey_219, makeKey_220, makeKey_221, makeKey_222, makeKey_223, makeKey_224, makeKey_225, makeKey_226, makeKey_227, makeKey_228, makeKey_229, makeKey_230, makeKey_231, makeKey_232, makeKey_233, makeKey_234, makeKey_235, makeKey_236, makeKey_237, makeKey_238, makeKey_239, makeKey_240, makeKey_241, makeKey_242, makeKey_243, makeKey_244, makeKey_245, makeKey_246, makeKey_247, makeKey_248, makeKey_249, makeKey_250, makeKey_251, makeKey_252, makeKey_253, makeKey_254, makeKey_255, makeKey_256, makeKey_257, makeKey_258, makeKey_259, makeKey_260, makeKey_261, makeKey_262, makeKey_263, makeKey_264, makeKey_265, makeKey_266, makeKey_267, makeKey_268, makeKey_269, makeKey_270, makeKey_271, makeKey_272, makeKey_273, makeKey_274, makeKey_275, makeKey_276, makeKey_277, makeKey_278, makeKey_279, makeKey_280, makeKey_281, makeKey_282, makeKey_283, makeKey_284, makeKey_285, makeKey_286, makeKey_287, makeKey_288, makeKey_289, makeKey_290, makeKey_291, makeKey_292, makeKey_293, makeKey_294, makeKey_295, makeKey_296, makeKey_297, makeKey_298, makeKey_299, makeKey_300, makeKey_301, makeKey_302, makeKey_303, makeKey_304, makeKey_305, makeKey_306, makeKey_307, makeKey_308, makeKey_309, makeKey_310, makeKey_311, makeKey_312, makeKey_313, makeKey_314, makeKey_315, makeKey_316, makeKey_317, makeKey_318, makeKey_319, makeKey_320, makeKey_321, makeKey_322, makeKey_323, makeKey_324, makeKey_325, makeKey_326, makeKey_327, makeKey_328, makeKey_329, makeKey_330, makeKey_331, makeKey_332, makeKey_333, makeKey_334, makeKey_335, makeKey_336, makeKey_337, makeKey_338, makeKey_339, makeKey_340, makeKey_341, makeKey_342, makeKey_343, makeKey_344, makeKey_345, makeKey_346, makeKey_347, makeKey_348, makeKey_349, makeKey_350, makeKey_351, makeKey_352, makeKey_353, makeKey_354, makeKey_355, makeKey_356, makeKey_357, makeKey_358, makeKey_359, makeKey_360, makeKey_361, makeKey_362, makeKey_363, makeKey_364, makeKey_365, makeKey_366, makeKey_367, makeKey_368, makeKey_369, makeKey_370, makeKey_371, makeKey_372, makeKey_373, makeKey_374, makeKey_375, makeKey_376, makeKey_377, makeKey_378, makeKey_379, makeKey_380, makeKey_381, makeKey_382, makeKey_383, makeKey_384, makeKey_385, makeKey_386, makeKey_387, makeKey_388, makeKey_389, makeKey_390, makeKey_391, makeKey_392, makeKey_393, makeKey_394, makeKey_395, makeKey_396, makeKey_397, makeKey_398, makeKey_399]; var funIndex = strToLong(cookie) % arrFun.length; var fun = arrFun[funIndex]; var result = fun(cookie); return result } function Navi(id) { var unzipid = unzip(id); var realid = com.str.Decrypt(unzipid); return realid }