火车头网页数据爬虫

免费课程

火车头采集器使用教程(入门)
基本数据爬取攻略及全网页信息爬取方法

1、火车头数据爬取(基本数据爬取攻略)

打开链家二手房网址,进入网址https://xz.lianjia.com/ershoufang/pg2/,看到有很多房源信息,末尾有
在这里插入图片描述
说明这是一个一级网址,只需要将pg2这里变为参数就可以访问所有网页信息。
随便打开一个房源https://xz.lianjia.com/ershoufang/103109436477.html网址,可以看到房源的具体信息,我们只需要将103109436477这部分进行参数,就可以访问所有房源具体信息。这是一个二级网页
在这里插入图片描述

1、采集网址规则

1新建分组,然后新建任务(此次任务名为class1_链家二手房)。
2、添加起始网址,选择批量多页,并且对于页数进行了参数化*
在这里插入图片描述
在这里插入图片描述
3、添加二级网址
在这里插入图片描述
4、Cookie进行反爬虫,点击浏览器登陆获取,输入一级网址,点击确定。
在这里插入图片描述

在这里插入图片描述

2、采集内容规则

在某个一个房源信息的网页右键点击查看房源源代码和检查。
在检查网页,点击箭头。
在这里插入图片描述
在查看房源源代码查询是否是唯一关键字
添加标题:uprice,添加开始字符串和结束字符串。对于有些字符可以使用添加Html标签过滤。对于一写文字有空行可以使用内容替换,最好替换为/。
在这里插入图片描述

3、发布内容设置

在这里插入图片描述
默认的模板信息。
name,price,uprice,room,info,Lon,Lat
[标签:name],[标签:price],[标签:uprice],[标签:room],[标签:info],[标签:Lon],[标签:Lat]
将文件格式改为

4、对数据进行分列和数据清洗(采用Righth函数)

在这里插入图片描述

2、 全网页爬取(全网页信息爬取方法)

1、导出来的一级url1

https://xz.58.com/jiedacqj/
https://xz.58.com/jiashijl/
https://xz.58.com/yagecqj/
https://xz.58.com/aliulcqj/
https://xz.58.com/pasatecqj/
https://xz.58.com/kaimeiruicqj/
https://xz.58.com/baomawuxicqj/
https://xz.58.com/mazidaliucqj/
https://xz.58.com/kaluolacqj/
https://xz.58.com/aodesaicqj/
https://xz.58.com/hanlandacqj/
https://xz.58.com/huangguancqj/
https://xz.58.com/maitengcqj/
https://xz.58.com/ruizhicqj/
https://xz.58.com/feiducqj/
https://xz.58.com/biekeglcqj/
https://xz.58.com/sangtanacqj/
https://xz.58.com/asilcqj/
https://xz.58.com/sutengcqj/
https://xz.58.com/bentiancrvcqj/

2、加载导出来的url1去获取二级网页

3、 python语言数据爬虫

1、爬取的网页:http://www.pm25.in/,主要爬取的是PM2.5的数据

在这里插入图片描述

2、抓取城市网页数据

import pandas as pd
from  lxml import etree
import requests as re

url=re.get('http://www.pm25.in/').text   #1、访问主网页,通过text属性将源代码提取出来
#print(url)
url=etree.HTML(url)#实例化url
data=url.xpath('//div[@class="all"]//a/@href')#div采用[]  #2、这一步主要是为了获取城市网址

在这里插入图片描述
data数据:
[’/abazhou’, ‘/akesudiqu’, ‘/alashanmeng’, ‘/aletaidiqu’, ‘/alidiqu’, ‘/ankang’, ‘/anqing’, ‘/anshan’, ‘/anshun’, ‘/anyang’, ‘/baicheng’, ‘/baise’, ‘/baishan’, ‘/baiyin’, ‘/baoding’, ‘/baoji’, ‘/baoshan’, ‘/baotou’, ‘/bayannaoer’, ‘/bazhong’, ‘/beihai’, ‘/beijing’, ‘/bengbu’, ‘/benxi’, ‘/bijie’, ‘/binzhou’, ‘/boertala’, ‘/bozhou’, ‘/cangzhou’, ‘/changchun’, ‘/changde’, ‘/changdou’, ‘/changdudiqu’, ‘/changjizhou’, ‘/changsha’, ‘/changshu’, ‘/changzhi’, ‘/changzhou’, ‘/chaoyang’, ‘/chaozhou’, ‘/chengde’, ‘/chengdu’, ‘/chenzhou’, ‘/chifeng’, ‘/chizhou’, ‘/chongqing’, ‘/chongzuo’, ‘/chuxiongzhou’, ‘/chuzhou’, ‘/dalian’, ‘/dalizhou’, ‘/dandong’, ‘/daqing’, ‘/datong’, ‘/daxinganlingde’, ‘/daxinganlingdiqu’, ‘/dazhou’, ‘/dehongzhou’, ‘/deyang’, ‘/dezhou’, ‘/dingxi’, ’

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我之前提供的代码确实有误。在正确的逻辑下,如果创建连接抛出异常,应继续尝试重连,直到达到最大重连次数。只有当连接成功创建后,才应该退出循环。 以下是修正后的代码: ```cpp #include <activemq/core/ActiveMQConnectionFactory.h> #include <activemq/library/ActiveMQCPP.h> #include <cms/Connection.h> #include <cms/Session.h> #include <cms/TextMessage.h> using namespace activemq::core; using namespace cms; int main() { // 设置 ActiveMQ broker 地址 std::string brokerURI = "tcp://localhost:61616"; // 设置 Topic 名称 std::string topicName = "topicName"; // 设置最大重连尝试次数 int maxReconnectAttempts = 3; // 设置重连延迟时间(毫秒) int reconnectDelay = 5000; try { // 初始化 ActiveMQ C++ 库 activemq::library::ActiveMQCPP::initializeLibrary(); // 创建连接工厂 ActiveMQConnectionFactory* connectionFactory = new ActiveMQConnectionFactory(brokerURI); Connection* connection = nullptr; int reconnectCount = 0; while (reconnectCount < maxReconnectAttempts) { try { // 创建连接 connection = connectionFactory->createConnection(); break; } catch (CMSException& ex) { std::cout << "Failed to connect. Retrying in " << reconnectDelay << " milliseconds..." << std::endl; ::sleep(reconnectDelay / 1000); reconnectCount++; } } if (connection != nullptr) { // 启动连接 connection->start(); // 创建会话 Session* session = connection->createSession(Session::AUTO_ACKNOWLEDGE); // 创建目标(Topic) Destination* destination = session->createTopic(topicName); // 创建消息生产者 MessageProducer* producer = session->createProducer(destination); // 创建消息 TextMessage* message = session->createTextMessage("Hello, ActiveMQ!"); // 发送消息 producer->send(message); // 关闭连接 connection->close(); // 清理资源 delete message; delete producer; delete destination; delete session; } else { std::cout << "Failed to connect after " << maxReconnectAttempts << " attempts." << std::endl; } // 清理资源 delete connectionFactory; // 终止 ActiveMQ C++ 库 activemq::library::ActiveMQCPP::shutdownLibrary(); } catch (CMSException& ex) { std::cout << "Exception occurred: " << ex.getMessage() << std::endl; } return 0; } ``` 在修正后的代码中,我们将创建连接的逻辑放在了 while 循环中。循环会在连接抛出异常时进行重试,直到连接成功创建或达到最大重连次数。只有当连接成功创建后,才会进入后续的会话创建、消息发送等操作。如果连接无法成功创建,则会输出相应的失败信息。 请注意,在成功创建连接后,我们仍然需要确保在结束时清理资源和终止 ActiveMQ C++ 库。 这样,无论连接是否成功创建,都可以在循环内部继续添加其他重连逻辑或错误处理逻辑,以满足实际需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值