python爬取链家房屋及经纬度信息-以宁波为例

本文介绍了一种从链家网站抓取房产信息的方法,包括构造URL、使用正则表达式和BeautifulSoup解析网页,获取房屋详情如标题、价格等,并通过百度API获取地理位置的经纬度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

铺垫工作

1:寻找你需要的城市的url。

2 :获取每栋房屋的详情url。

3:获取具体信息

4:利用百度API解析地址返回经纬度(其实在链家的网站上已经返回了经纬度,但是不知道为何拿不到res.text,有待研究)

# encoding: utf-8

import json
import requests
from bs4 import BeautifulSoup
import re
import sys

reload(sys)
sys.setdefaultencoding('utf-8')


for i in range(100):
#循环构造url
    url = 'http://nb.lianjia.com/ershoufang/pg{}/'
    k=url.format(i)

   #添加请求头,否则会被拒绝
    headers = {'user-agent': 'my-app/0.0.1'}
    res = requests.get(k,headers=headers)
#基于正则表达式来解析网页内容,拿到所有的详情url
#原始可能是这么做的,但是后来发现bs4给我们提供了更方便的方法来取得各元素的内容
#正则表达式最重要的两个东西,.任意匹配字符,*匹配任意次数,?以html结束
    text=res.text
    re_set = re.compile('https://nb.lianjia.com/ershoufang/[0-9]*.?html')
    re_get = re.findall(re_set, text)
    
for name in re_get:
        res = requests.get(name, headers=headers)
        info = {}
        text2 = res.text
       #基于bs4来解析,再也不用写正则了。
        soup = BeautifulSoup(text2, 'lxml')
        info['标题'] = soup.select('.main')[0].text
        info['总价'] = soup.select('.total')[0].text
        info['每平方售价'] = soup.select('.unitPriceValue')[0].text
        info['参考总价'] = soup.select('.taxtext')[0].text
        info['建造时间'] = soup.select('.subInfo')[2].text
        info['小区名称'] = soup.select('.info')[0].text
        info['所在区域'] = soup.select('.info a')[0].text + ':' + soup.select('.info a')[1].text
        info['链家编号'] = str(re_get)[33:].rsplit('.html')[0]

        # 根据地址获取对应经纬度,通过百度的api接口来进行
        mc=soup.select('.info')[0].text
        location='宁波'+mc
        api_url = 'http://api.map.baidu.com/geocoder/v2/?address={}&output=json&ak=百度申请的秘钥'.format(location)
        data = requests.get(api_url)
        result = json.loads(data.text)
        print(result)
        try:
            longitude = result['result']['location']['lng']
            latitude = result['result']['location']['lat']
        except Exception as e:
            print('Error:这个地点没有查到对应的经纬度---- %s' % str(e))
            longitude = [0]
            latitude = [0]
k=1

 

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值