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

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

前段时间通过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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用PHP的curl库可以方便地实现网页抓取功能。通过curl库,我们可以发送HTTP请求并获取服务器响应的内容。以下是一个使用php curl抓取页面所有链接的方法: 1. 创建一个curl资源句柄: ``` $ch = curl_init(); ``` 2. 设置curl选项,包括目标URL、请求头信息和其他参数: ``` curl_setopt($ch, CURLOPT_URL, "目标URL"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4"); ``` 其中,`CURLOPT_URL`用于设置目标URL,`CURLOPT_RETURNTRANSFER`用于设置是否将抓取内容作为字符串返回,`CURLOPT_FOLLOWLOCATION`用于设置是否跟随重定向,`CURLOPT_USERAGENT`用于设置用户代理。 3. 执行curl请求并获取响应内容: ``` $response = curl_exec($ch); ``` 4. 使用正则表达式或其他方法从响应内容中提取所有链接: ``` preg_match_all('/<a\s+href=["\'](.*?)["\']/', $response, $matches); $links = $matches<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法](https://download.csdn.net/download/weixin_38594687/13020038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [PHP curl实现抓取302跳转后页面的示例](https://download.csdn.net/download/weixin_38500572/13045232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [php中curl抓取页面](https://blog.csdn.net/weixin_27727467/article/details/115831006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值