写一段爬取链家郑州二手房房价的代码,里面包括,总价,单价,户型,面积等信息。链家二手房网站为:https://zz.lianjia.com/ershoufang/
时间: 2024-06-08 11:06:31 浏览: 14
好的,以下是一段Python代码,可以爬取链家郑州二手房房价的信息,包括总价、单价、户型和面积等信息:
```python
import requests
from bs4 import BeautifulSoup
url = "https://zz.lianjia.com/ershoufang/"
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
houses = soup.find_all('div', {'class': 'info'})
for house in houses:
# 获取总价
total_price = house.find('div', {'class': 'totalPrice'}).text.strip()
# 获取单价
unit_price = house.find('div', {'class': 'unitPrice'}).text.strip()
# 获取户型和面积
room_info = house.find('div', {'class': 'houseInfo'}).text.strip()
# 输出结果
print(total_price, unit_price, room_info)
```
注意,这段代码只能爬取到一页的房价信息。如果需要爬取多页的信息,则需要结合requests和BeautifulSoup的分页功能进行爬取。
相关问题
Scrapy-redis爬取链家二手房房价代码
下面是使用Scrapy-redis爬取链家二手房房价的代码:
1. 创建一个Scrapy项目
```
$ scrapy startproject lianjia
```
2. 修改settings.py配置文件,启用Redis
```
# 启用Redis调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 启用Redis去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 启用Redis队列
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
# 设置Redis连接信息
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
```
3. 创建一个Spider
```
$ scrapy genspider lianjia_spider lianjia.com
```
4. 修改lianjia_spider.py
```
# 引入RedisSpider
from scrapy_redis.spiders import RedisSpider
class LianjiaSpider(RedisSpider):
name = 'lianjia_spider'
allowed_domains = ['lianjia.com']
# 设定爬取的初始链接
def start_requests(self):
url = 'https://sh.lianjia.com/ershoufang/'
yield scrapy.Request(url=url, callback=self.parse)
# 解析二手房列表页
def parse(self, response):
# 获取下一页链接并加入Redis队列
next_page = response.css('div.page-box a.next::attr(href)').get()
if next_page is not None:
next_page_url = response.urljoin(next_page)
self.server.rpush('lianjia_spider:start_urls', next_page_url)
# 解析二手房信息
house_list = response.css('ul.sellListContent li.clear')
for house in house_list:
# 获取房屋名称和链接
name = house.css('div.title a::text').get()
link = house.css('div.title a::attr(href)').get()
# 获取房屋价格
price = house.css('div.totalPrice span::text').get()
# 获取房屋面积和户型
area = house.css('div.houseInfo a::text').getall()[1]
layout = house.css('div.houseInfo a::text').getall()[0]
# 输出房屋信息
print(name, link, price, area, layout)
```
5. 运行爬虫
```
$ scrapy runspider lianjia_spider.py
```
6. 启动Redis队列
```
$ redis-server
```
7. 启动Redis Spider
```
$ scrapy runspider lianjia_spider.py
```
运行后,Scrapy会将初始链接加入Redis队列,并从队列中获取链接进行爬取。当爬取到列表页时,会将下一页的链接加入Redis队列,从而实现了分布式爬取。爬取到的房屋信息会输出到控制台。
用python爬取链家泰州二手房信息400条并直接生成表格包含房屋名称,价格,面积,户型,关注人数
好的,我可以帮你实现这个功能。首先,我们需要安装一些库,包括requests、BeautifulSoup4和pandas。你可以在终端中使用以下命令安装:
```
pip install requests beautifulsoup4 pandas
```
接下来,我们可以编写爬虫代码,如下所示:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 设置请求头信息
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'}
# 获取网页内容
def get_html(url):
response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding
if response.status_code == 200:
return response.text
else:
return None
# 解析网页内容
def parse_html(html):
soup = BeautifulSoup(html, 'html.parser')
house_list = soup.find('ul', {'class': 'sellListContent'}).find_all('li')
data = []
for house in house_list:
name = house.find('div', {'class': 'title'}).find('a').text.strip()
price = house.find('div', {'class': 'totalPrice'}).find('span').text.strip()
area = house.find('div', {'class': 'houseInfo'}).find_all('a')[1].text.strip()
layout = house.find('div', {'class': 'houseInfo'}).find_all('a')[0].text.strip()
follow = house.find('div', {'class': 'followInfo'}).find('span', {'class': 'starIcon'}).text.strip()
data.append([name, price, area, layout, follow])
return data
# 保存为csv文件
def save_to_csv(data):
df = pd.DataFrame(data, columns=['房屋名称', '价格', '面积', '户型', '关注人数'])
df.to_csv('lianjia.csv', index=False, encoding='utf_8_sig')
# 主函数
def main():
url = 'https://tz.lianjia.com/ershoufang/pg{}/'
data = []
for i in range(1, 5):
html = get_html(url.format(i))
if html:
data += parse_html(html)
save_to_csv(data)
if __name__ == '__main__':
main()
```
在这个示例中,我们使用了requests库来发送HTTP请求,并使用BeautifulSoup4库解析HTML页面。我们首先定义了一个get_html函数,用于获取给定URL的HTML内容。然后,我们定义了一个parse_html函数,用于解析HTML内容并提取房屋名称、价格、面积、户型和关注人数。最后,我们使用pandas库将数据保存到CSV文件中。在主函数中,我们循环遍历多个页面,并调用get_html和parse_html函数来获取和解析每个页面的内容。最后,我们调用save_to_csv函数将数据保存到CSV文件中。
你可以将以上代码保存在一个Python文件中,例如lianjia.py,然后在终端中运行它:
```
python lianjia.py
```
运行成功后,你将在当前目录下看到一个名为lianjia.csv的文件,其中包含了400条链家泰州二手房的信息。