您的位置:首页 > 房产 > 家装 > 正能量网站入口免费安全_网站建设服务热线_长春网站优化服务_cps广告是什么意思

正能量网站入口免费安全_网站建设服务热线_长春网站优化服务_cps广告是什么意思

2025/1/7 9:04:37 来源:https://blog.csdn.net/2301_78198846/article/details/143171564  浏览:    关键词:正能量网站入口免费安全_网站建设服务热线_长春网站优化服务_cps广告是什么意思
正能量网站入口免费安全_网站建设服务热线_长春网站优化服务_cps广告是什么意思

1. 引言

在当今大数据时代,网络爬虫成为获取信息的重要手段之一。本文将以某家二手房为例,演示如何使用Python爬虫抓取房源信息,并将这些信息保存到Excel文件中。
目标网站
在这里插入图片描述

2. 准备工作

2.1 安装必要的库

在开始之前,请确保你的环境中已经安装了以下Python库:

  • requests:用于发送HTTP请求。
  • lxml:提供了一个强大的XPath选择器,方便解析HTML文档。
  • pandas:用来处理和分析数据。
  • fake_useragent:随机生成User-Agent,以模拟不同的浏览器访问。

可以通过pip命令安装它们:

pip install requests lxml pandas fake_useragent

2.2 代理池准备

为了防止IP被封禁,我们需要准备一个代理池。这里假设你已经有了一个名为proxies.txt的文件,其中每一行都存储了一个可用的代理服务器地址。

3. 代码详解

3.1 导入模块

首先需要导入所需的Python库:

import random
import pandas as pd
from lxml import etree
import requests
from fake_useragent import UserAgent

3.2 设置请求头

接下来设置请求头,特别是User-Agent字段,使用fake_useragent库随机生成:

headers = {'User-Agent': UserAgent().random
}

3.3 读取代理列表

在爬虫过程中,使用代理可以有效避免被网站封锁。我们从一个文件中读取代理服务器的列表,并将其存储到proxies列表中:

file_path = "E:/Python/代理池/proxies.txt"# 从文件中读取代理列表
proxies = []
with open(file_path, 'r') as file:for line in file:proxy = line.strip()  # 去除每行末尾的换行符proxies.append(proxy)

这里需要注意的是,确保proxies.txt文件中的每一行都是有效的代理地址格式(例如:http://ip:port)。

3.4 抓取数据

3.4.1 创建会话对象

为了更好地管理HTTP请求和保持连接状态,我们可以创建一个requests.Session对象:

session = requests.session()
3.4.2 发送POST请求

针对链家二手房的不同页面,通过循环遍历页码来发送请求。每次请求时随机选择一个代理以减少被封禁的风险:

for page in range(1, 6):  # 抓取第1页到第5页url = f'https://bj.lianjia.com/ershoufang/pg{page}/'# 使用随机选择的代理发送POST请求response = session.post(url=url, proxies={'http': random.choice(proxies)}, headers=headers, timeout=10)

注意,这里使用了post方法,但通常对于这类网页浏览请求,使用get方法更为合适。这可能是一个示例代码的小错误,正确的做法应该是:

response = session.get(url, proxies={'http': random.choice(proxies)}, headers=headers, timeout=10)
3.4.3 解析HTML内容

一旦成功获取响应,接下来需要解析HTML文档,提取有用的信息。这里采用lxml库提供的XPath功能:

tree = etree.HTML(response.text)
items = tree.xpath('//*[@id="content"]/div[1]/ul/li')

上述代码定位到了包含房源信息的列表项。

3.4.4 提取信息

对每个房源项目进行解析,提取标题、位置信息、房屋详情以及总价等字段:

data = []
for item in items:title = item.xpath('./div[1]/div[1]/a/text()')[0]  # 房源标题positionInfo = item.xpath('./div[1]/div[2]/div/a[1]/text()')[0] + item.xpath('./div[1]/div[2]/div/a[2]/text()')[0]  # 位置信息houseInfo = item.xpath('./div[1]/div[3]/div/text()')[0]  # 房屋信息total_price = item.xpath('./div[1]/div[6]/div[1]/span/text()')[0] + item.xpath('./div[1]/div[6]/div[1]/i[2]/text()')[0]  # 总价data.append({'标题': title,'位置信息': positionInfo,'房屋信息': houseInfo,'总价': total_price})

将这些信息添加到当前页面的数据集合data中。

3.5 存储数据

当所有页面都处理完毕后,我们将收集到的所有数据合并成一个大的列表all_data,然后转换为Pandas DataFrame,并最终保存为Excel文件:

# 将当前页面的数据添加到总数据列表
all_data.extend(data)# 将所有数据转换为 DataFrame
df = pd.DataFrame(all_data)# 将 DataFrame 写入 Excel 文件
df.to_excel('链家二手房.xlsx', index=False)
print("数据已成功保存到 Excel 文件中")

4. 运行结果

控制台输出
在这里插入图片描述

保存文档
在这里插入图片描述

5. 结论

本文介绍了如何利用Python编写简单的网络爬虫程序来抓取链家网上的二手房信息,并且展示了如何使用Pandas库将这些信息保存为Excel文件。
确保遵守目标网站的服务条款,在合法合规的前提下使用爬虫技术。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com