用Python爬虫爬取链家网上的房源信息

本文介绍了一位Python新手如何使用Python爬虫爬取链家网的房源信息,包括爬取、解析、存储数据的步骤,以及数据分析的初步成果。通过正则表达式和BeautifulSoup解析HTML,数据存储到Excel和数据库,最后展示了使用Flask框架进行数据分析的简单应用。
摘要由CSDN通过智能技术生成

       相信有很多朋友在学习python后,一定都有过使用这门语言编写爬虫的想法。刚刚学习了python的小菜(因为很菜所以叫小菜)我也是如此。这里小菜和小菜的伙伴就以python新手的身份分享一下我们使用python爬虫爬取链家网上的房源信息的过程。如有大佬路过,求大佬指出其中需要改进的地方,小菜我感激不尽。

        编写爬虫之前,我们首先应该搞清楚爬虫到底是干什么的。这里语言表达力不足的小菜只好借用度娘上的答案向大家介绍一下:

     网络爬虫,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

        大概了解爬虫后,我们就要开始做编写爬虫的准备工作了。首先是我们已经确定是用python语言进行编写,然后我们就要确定使用什么开发平台和环境了,这里,小菜使用的是Windows平台 (准备之前查了一些资料,看到一些大佬说就开发而言,linux比windows用起来舒服,所以大家也可以试试linux),开发环境是pycharm2021社区版(开始下载了专业版,但是发现每天打开都需要输入激活码,并且对于我们一般人来说社区版也够用了,于是重新下载了社区版)。

        接下来应该就是要准备编写爬虫了,其实,在小菜看来,编写爬虫其实就是各种库的应用。首先说一下我们的大概思路:爬取数据——解析数据——存储数据。第一步我们需要安装我们需要的库,安装方法网上很多,这里就不具体说了。接下来是导入我们需要的库,导入库的语句为 import +库;例如在我的代码中需要的库导入如下:

import re #正则表达式,进行文字匹配
from bs4 import BeautifulSoup#网页解析,获取数据
import urllib.request,urllib.error #制定URL,获取网页数据
import xlwt #进行excel操作
import sqlite3 #进行SQLLite数据库操作

接下来就是按照思路开始编写代码了。

一、爬取数据

       我们第一步是爬取数据,从导入的库中应该可以猜出这里小菜使用的是正则表达式。首先我们打开链家网页:https://sh.lianjia.com/zufang/  :

我们以其中一个房源信息为例,可以看出它包含了整租、地段、几室几厅、房子朝向等信息,同时也可以思考自己需要获取其中的哪些信息。这时,我们使用组合键  fn+f12  可以打开该网页的源代码,点击左上角箭头,再点击左侧标注出的内容,我们会在源代码框内发现这些内容其实都是一一对应的:

 到这里,我们也大概了解了网页结构,正则表达式也就正式上场啦。我们可以发现网页中包含浦东-金桥-嘉泷汇的源代码为:

<a target="_blank" href="/zufang/pudong/">浦东</a>
<a href="/zufang/jinqiao/" target="_blank">金桥</a>
<a title="嘉泷汇" href="/zufang/c5011102208437/" target="_blank">嘉泷汇</a>

于是,我们使用正则表达式获取网页信息的语句可以写为:

#区域
findplace1 = re.compile(r'<a href="/zufang/.*" target="_blank">(.*)</a>-<a href="/zufang/.* tar
好的,下面是一个简单的Python爬虫爬取链家二手房信息的教程: 1. 安装必要的库:requests、BeautifulSoup4、pandas ``` pip install requests pip install BeautifulSoup4 pip install pandas ``` 2. 导入库 ```python import requests from bs4 import BeautifulSoup import pandas as pd ``` 3. 定义函数获取页面信息 ```python def get_page(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) response.encoding = 'utf-8' html = response.text soup = BeautifulSoup(html, 'html.parser') return soup ``` 4. 定义函数获取房源信息 ```python def get_house_info(soup): house_list = [] house_nodes = soup.select('.sellListContent .info') for house_node in house_nodes: house = {} house['title'] = house_node.select('.title a')[0].get_text().strip() house['address'] = house_node.select('.flood .positionInfo a')[0].get_text().strip() house['info'] = house_node.select('.address .houseInfo')[0].get_text().strip() house['area'] = house_node.select('.address .area')[0].get_text().strip() house['total_price'] = house_node.select('.priceInfo .totalPrice span')[0].get_text().strip() house['unit_price'] = house_node.select('.priceInfo .unitPrice span')[0].get_text().strip() house_list.append(house) return house_list ``` 5. 定义主函数 ```python def main(): url = 'https://bj.lianjia.com/ershoufang/' soup = get_page(url) total_pages = int(soup.select('.page-box .totalPage')[0].get_text()) house_list = [] for page in range(1, total_pages + 1): page_url = url + 'pg{}/'.format(page) soup = get_page(page_url) house_list += get_house_info(soup) df = pd.DataFrame(house_list) df.to_csv('house.csv', index=False, encoding='utf-8') ``` 6. 运行主函数 ```python if __name__ == '__main__': main() ``` 这个爬虫爬取北京链家二手房的前100页房源信息,并将结果保存在csv文件中。你可以根据自己的需求修改代码。需要注意的是,爬虫是一种不受欢迎的行为,你需要遵守网站的规则,尊重他人的权益。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值