LinkExtractor 深度爬取url中含有中文关键字
scrapy 默认的是utf-8的格式进行编码,在利用链接提取器LinkExtractor进行深度爬取的时候, 返回的Response中的url链接中可能会含有中文关键字,如果不进行处理的情况下scrapy会自动的将中关键字以utf-8的格式进行编码后再去请求这个url,但是网站的解析格式可能不是utf-8, 比如百度就是gbk格式,这时候可以利用LinkExtractor中的process_links 指定特定的函数对返回的url进行处理
rules = (Rule(LinkExtractor(restrict_xpaths='//div[@class="showpagelist"]/a'), callback="parse_item", follow=True,process_links="encode_url"),) def encode_url(self, links): """ 因为网页是以gbk的形式编码,但是在scrapy中是以utf-8的形式编码,需要修改url中的中文字符的编码格式 :param links:经过解析后的返回的url :return: """ for each in links: serach_keys = re.search(r"search_key=(.*?)&.*", each.url ) if serach_keys: serach_key = serach_keys.group(1) if self.check_contain_chinese(serach_key): encoded_search_key = quote(serach_key.encode("gbk")) each.url = re.sub(r'%s'%serach_key, encoded_search_key, each.url) return links def check_contain_chinese(self, check_str): # 判断字符串是不是中文 for ch in check_str: if u'\u4e00' <= ch <= u'\u9fff': return True return False
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南