基于bs4的python爬虫-链家新房(广州页面)

本文介绍了使用Python的requests和bs4库抓取链家广州新房数据,数据存储到MySQL数据库,并实现图片保存及GUI可视化饼图。虽然代码简单且未经优化,适合初学者学习。
摘要由CSDN通过智能技术生成

概述

  • 基于bs4解析的python爬虫,没有用别的框架,用了requests库抓取,实现了链家新房数据爬取并保存到mysql数据库中,图片url也存入数据库,图片本体保存在本地,还码了一个gui可视化饼图。

效果图

  • 控制台
    在这里插入图片描述

  • 饼图
    在这里插入图片描述

  • 数据库
    在这里插入图片描述

  • 图片保存到本地
    在这里插入图片描述

具体实现

  • 确定链接。我的链接是这个:链家新房-广州
  • 然后是插件。这里我装了bs4,pymysql,matplotlib。需要的自行安装一下。接下来是分区代码
  • 配置header和项目初始化:
headers = {
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
    'Accept': 'image/webp,image/*,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate',
    'Referer': 'http://www.baidu.com/link?url=_andhfsjjjKRgEWkj7i9cFmYYGsisrnm2A-TN3XZDQXxvGsM9k9ZZSnikW2Yds4s&wd=&eqid=c3435a7d00006bd600000003582bfd1f',
    'Connection': 'keep-alive'}
page = ('pg')
hlist = []

  • 对链接信息的处理:
def listinfo(listhtml):
    areasoup = BeautifulSoup(listhtml, 'html.parser')
    ljhouse = areasoup.find_all('div', attrs={
   'class': 'resblock-desc-wrapper'})
    loupanimg = areasoup.find_all("img", attrs={
   "class": "lj-lazy"})
    i=0
    for house in ljhouse:
        loupantitle = house.find("div", attrs={
   "class": "resblock-name"})
        loupanname = loupantitle.a.get_text()
        loupantag = loupantitle.find_all("span")
        wuye = loupantag[0].get_text()
        xiaoshouzhuangtai = loupantag[1].get_text()
        location = house.find("div", attrs={
   "class": "resblock-location"}).get_text()
        jishi = house.find("a", attrs={
   "class": "resblock-room"}).get_text()
        area = house.find("div", attrs={
   "class": "resblock-area"})
        sarea = area.find("span").get_text()
        r_area = '暂无'
        if sarea != '':
            r_area = house.find("div", attrs={
   "class": "resblock-area"}).get_text().split()[1]
        tag = house.find("div", attrs={
   "class": "resblock-tag"}).get_text()
        jiage = house.find("div", attrs={
   "class": "resblock-price"})
        price = jiage.find("div", attrs={
   "class": "main-price"}).get_text().split()[0]  # 截取数字
        if price.replace('\n','').find('-') != -1:
           price = price.split('-')[1]
        total 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值