爬取贝壳平台新房数据并可视化

  • 先爬取数据
import requests
import time
import random
from lxml import etree
import csv
# 设置请求头
user_agents = [ "Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0",
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0",
                "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/29.0",
                "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0",
                "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0",
                "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0",
                "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0",
                "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0",
                "Mozilla/5.0 (X11; U; Linux Core i7-4980HQ; de; rv:32.0; compatible; JobboerseBot; Gecko/20100101 Firefox/38.0",
                "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0"]
def get_html():
    # 获取页面信息
    for page in range(1, 101):
        url = "https://wh.fang.ke.com/loupan/hannan-caidian-jiangxia-huangbei-xinzhou-jiangan-jianghan-wuchang-qiaokou-hanyang-hongshan-dongxihu-qingshan-donghugaoxin-zhuankoukaifaqu/pg{}/#donghugaoxin".format(page)
        # 设置随机用户代理
        header = {
   
   "user-agent": random.choice(user_agents)}
        try:
            r = requests.get(url, headers=header).text
        except Exception as e:
            print(e)
        else:
            get_data(r)
            time.sleep(2)
            
def get_data(r):
    # 解析页面数据
    html = etree<
Python爬取贝壳二手房数据的代码可以使用Scrapy框架实现,具体步骤如下: 1. 创建Scrapy项目:在命令行中输入"scrapy startproject project_name",其中project_name为项目名称。 2. 创建Spider:在项目目录下创建一个Spider,用于爬取贝壳二手房的数据。可以使用XPath或CSS选择器来定位需要爬取数据。 3. 设置User-Agent和Cookies:为了防止被反爬,需要设置User-Agent和Cookies,可以使用随机生成的User-Agent和从Cookies池中获取的Cookies。 4. 存储数据:可以将爬取到的数据存储在本地文件或数据库中,常用的存储方式有CSV、JSON和MySQL等。 5. 可视化数据:可以使用Python中的数据可视化库,如Matplotlib、Seaborn和Plotly等,对爬取到的数据进行可视化展示。 以下是一个简单的Python爬取贝壳二手房数据的示例代码: ``` import scrapy import random class BeikeSpider(scrapy.Spider): name = 'beike' allowed_domains = ['sz.ke.com'] start_urls = ['https://sz.ke.com/ershoufang/'] def start_requests(self): headers = { 'User-Agent': self.get_random_user_agent(), 'Cookie': self.get_random_cookie() } for url in self.start_urls: yield scrapy.Request(url, headers=headers, callback=self.parse) def parse(self, response): # 使用XPath或CSS选择器提取需要的数据 data = { 'title': response.xpath('//title/text()').get(), 'price': response.css('.totalPrice::text').get(), 'area': response.css('.houseInfo > .area::text').get(), # ... } yield data def get_random_user_agent(self): # 随机生成User-Agent user_agents = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36', # ... ] return random.choice(user_agents) def get_random_cookie(self): # 从Cookies池中获取Cookies cookies = [ 'cookie1=value1; cookie2=value2; ...', 'cookie1=value1; cookie2=value2; ...', # ... ] return random.choice(cookies) ``` 关于可视化数据的代码,需要根据具体的数据类型和展示需求进行编写。可以参考Matplotlib、Seaborn和Plotly等库的官方文档和示例代码。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值