使用requests和xpath从搜房网上抓取上海的二手房房源信息(要求获取所有分页上的房源,且每套房源包含标题、楼盘、地点、经纬度、面积、房型、楼层、朝向、建筑年代、单价、总价、经纪人、联系电话等,缺数据的留空)
时间: 2024-10-11 21:14:11 浏览: 27
在Python中,你可以使用`requests`库来发送HTTP请求获取网页内容,然后利用`lxml`或`BeautifulSoup`这样的库解析HTML文档,通过XPath表达式来抓取你需要的信息。以下是一个基本的步骤:
1. 安装必要的库:
```bash
pip install requests lxml
```
2. 编写Python脚本:
```python
import requests
from lxml import etree
# 搜房网二手房页面的基础URL
base_url = "https://sh.fang.com/loupan/"
# 获取分页链接的函数
def get_page_links(url):
response = requests.get(url)
tree = etree.HTML(response.text)
links = tree.xpath('//a[@class="next"]/@href') # 根据XPath选择器查找下一页链接
return links if links else [] # 如果没有下一页,返回空列表
# 抓取房源信息的函数
def parse_property(html):
props = []
tree = etree.HTML(html)
try:
title = tree.xpath('//div[@class="title"]/h1/text()')[0]
... (继续依次抽取其他属性的值,并处理异常)
except IndexError:
... (如果某个属性不存在,可以设置为空字符串或None)
props.append({...}) # 将抓取到的数据组成字典并添加到列表中
return props
# 主函数
def scrape_all_pages():
properties = []
url = base_url + 'list-pg?city=sh&offset=' # 设置初始URL,offset用于分页
while True:
response = requests.get(url)
properties.extend(parse_property(response.text))
links = get_page_links(base_url + url)
if not links:
break # 如果没有更多链接,停止循环
url = base_url + links[0] # 更新URL到下一个页面
return properties
# 调用主函数并处理结果
all_properties = scrape_all_pages()
for prop in all_properties:
print(prop)
# 可能需要进一步处理数据,例如保存到文件或数据库中
阅读全文