QureyList抓取不同编码页面,获取内容为空

在使用QueryList抓取GB2312编码的中文页面时,遇到复杂字符会导致内容丢失。通过调整转码步骤解决了数据丢失问题。此外,为应对网络不稳定造成的内容为空,引入了重试机制以确保嵌套页面抓取的稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间通过QueryList抓取最新省市区地址信息的时候,出现了两个问题:
1、目标页面是GB2312编码的,我存的数据库是UTF-8编码的,在中文转码的时候,发现如果中文太复杂,抓取内容会被抛弃而导致内容抓取不全,获取的数据丢失;
2、一次抓取所有页面内容的时候,有时候程序会突然中断掉,嵌套页面抓取失败;

首先介绍一下什么是QueryList,QueryList是一个基于phpQuery的采集工具。QueryList具有jQuery一样的DOM操作能力、Http网络操作能力、乱码解决能力、内容过滤能力以及可扩展能力;可以轻松实现诸如:模拟登陆、伪造浏览器、HTTP代理等意复杂的网络请求;拥有丰富的插件,支持多线程采集以及使用PhantomJS采集JavaScript动态渲染的页面。

问题1:
用queryList抓取页面的时候,发现不同编码转换的时候,遇到复杂的中文,直接会把从复杂字开始的后面内容全部抛弃掉,比如:我要抓取的是省市区列表,在列表中遇到复杂中文的时候,从当前这条开始到后面的记录就全部丢失掉了;于是便去queryList源码查找原因。

// QueryList.php
public static function Query($page,array $rules, $range = '', $outputEncoding = null, $inputEncoding = null,$removeHead = false)
    {
        return  self::getInstance()->_query($page, $rules, $range, $outputEncoding, $inputEncoding,$removeHead
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值