利用BS实现安居客房地产中介信息的爬取

本文介绍了一个使用BeautifulSoup从安居客网站抓取房产经纪人信息的Python爬虫实例。通过分析网页结构,定位到所需信息的HTML标签及类名,实现了自动化抓取并将结果保存到本地文件。

    http://beautifulsoup.readthedocs.io/zh_CN/latest/ 这是官方文档


利用BS对安居客上主要信息的爬取。

红框框内的就是这次爬取的主要信息,bs对于正则表达式来说,简单了许多,比如说:


利用F12加F5,进行查询,当我们查看,我们需要的信息在哪一个类的下面,它的标签是什么。当我们需要的时候用什么标签进行提取,还有具体不懂的地方可以进行观看官方文档。

这是全部的代码:

#!/usr/bin/python
#  -*- coding: utf-8 -*
from bs4 import BeautifulSoup
import urllib
import urllib2
import re
import os
i=1
for i in range(1,7):

        url=' https://beijing.anjuke.com/tycoon/pi'
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = { 'User-Agent' : user_agent }
        request = urllib2.Request(url,headers = headers)
        response = urllib2.urlopen(request)
        content = response.read()

        soup=BeautifulSoup(content)
        text=soup.find_all('div',class_='jjr-itemmod')
        for k in text:
            s=(k.get_text(strip=True))+'\n'
            print s
            f1 = open('58.txt','a')
            f1.write(s.encode('UTF-8'))
            f1.close()



爬取安居客二手信息可以按照以下步骤进行: ### 1. 明确需求和目标 确定要爬取信息字段,如标题、屋类型、建造时间、面积、地址、价格、单价等,像需求中提到的爬取二手信息字段包括 titile,house_type,build_time,area,address,price,unit_price [^1]。 ### 2. 环境准备 需要安装 Python 以及相关的库,例如 `requests` 用于发送 HTTP 请求,`BeautifulSoup` 用于解析 HTML 页面,`pandas` 用于数据处理和导出到 Excel 表格,`selenium` 用于处理动态页面。可以使用以下命令安装: ```bash pip install requests beautifulsoup4 pandas selenium ``` ### 3. 分析页结构 打开安居客二手页面,使用浏览器的开发者工具(如 Chrome 的开发者工具)分析页面的 HTML 结构,找到包含二手信息的元素及其对应的 CSS 选择器或 XPath。 ### 4. 发送请求获取页面内容 可以使用 `requests` 库发送 HTTP 请求获取页面内容,对于动态加载的页面,可使用 `selenium` 模拟浏览器操作。以下是使用 `selenium` 的示例代码: ```python from selenium import webdriver from bs4 import BeautifulSoup # 设置 Chrome 浏览器驱动路径 driver = webdriver.Chrome() # 安居客二手页面 URL request_url = "https://bj.anjuke.com/sale/" # 循环爬取多页数据 for i in range(3): url = request_url + str(i + 1) driver.get(url) # 获取页面 HTML 内容 html = driver.find_element_by_xpath("//*").get_attribute("outerHTML") soup = BeautifulSoup(html, "html.parser", from_encoding="utf-8") # 找到所有房源列表项 house_list = soup.find_all("li", class_="list-item") for house in house_list: # 提取房源信息 name = house.find("div", class_="house-title").a.text.strip() details = house.find("div", class_="details-item").text.strip() address = house.find("span", class_="comm-address").text.strip() price = house.find("span", class_="price-det").text.strip() print("name:{} details:{} address:{} price:{}".format(name, details, address, price)) ``` ### 5. 解析页面内容提取信息 使用 `BeautifulSoup` 或其他解析库根据分析得到的元素定位信息提取所需的二手信息。 ### 6. 数据存储 将爬取到的数据存储到合适的地方,如 Excel 表格或数据库。使用 `pandas` 库将数据导出到 Excel 表格的示例代码如下: ```python import pandas as pd # 创建一个空的 DataFrame 用于存储数据 houses = pd.DataFrame(columns=["name", "details", "address", "price"]) # 假设已经有了爬取到的数据 # 这简单模拟数据添加 data = [ {"name": "房源1", "details": "两室一厅", "address": "北京市朝阳区", "price": "500万"}, {"name": "房源2", "details": "三室两厅", "address": "北京市海淀区", "price": "800万"} ] for item in data: houses = houses.append(item, ignore_index=True) # 导出到 Excel 表格 houses.to_excel("anjuke_houses.xlsx", index=False) ``` ### 7. 反爬虫处理 安居客可能有反爬虫机制,为了避免被封禁 IP,可以采取以下措施: - 设置请求头,模拟浏览器行为。 - 控制请求频率,避免短时间内发送大量请求。 - 使用代理 IP 轮换。 ### 8. 异常处理 在代码中添加异常处理机制,以处理可能出现的络请求失败、页面解析错误等异常情况。 ### 9. 代码优化和扩展 可以根据实际需求对代码进行优化和扩展,如增加更多的信息字段、爬取更多的页面等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值