python爬虫——beautifulsoup保存图片

import requests
import os
import random
from openpyxl import Workbook
import urllib.request
from bs4 import BeautifulSoup

#获取网页信息
def get_html(url):
    head = {
        'Connection': 'keep-alive',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36'
    }
    # 设置代理IP
    proxiesl = ['183.62.196.10:3128','112.115.57.20:3128']
    r = requests.get(url,headers=head,proxies = {'https':random.choice(proxiesl))
    r.encoding='utf-8'
    return r.text

#清洗数据
x=1
#用于存放数据
datalist=[]
def get_data(data):
    soup = BeautifulSoup(data,'html.parser')
    #查询class标签下的所有数据
    ul = soup.find('ul',attrs={'class':'house-lst'})
    #遍历查询所有的li标签的数据
    for li in ul.find_all('li'):
        # 创建保存图片的文件夹,如果没有这个文件夹,则创建一个
        if not os.path.isdir('image'):
            os.mkdir('image')
        #将x设置为全局变量
        global x
        # 获取图片下载地址,并下载图片
        dizhi = li.find('img')['src']

        # 图片保存地址
        bc = 'image/' + str(x) + ".jpg"
        #下载图片并保存
        urllib.request.urlretrieve(dizhi, bc)
        #用于临时存放数据
        lis=[]
        #标题
        title = li.find('div',attrs={'class':'info-panel'}).find('h2').text
        #小区
        address = li.find('div',attrs={'class':'where'}).find('a').text.strip('  ')
        #户型
        huxing = li.find('span',attrs={'class':'zone'}).find('span').text.strip('  ')
        #面积
        size = li.find('span',attrs={'class':'meters'}).text.strip('  ')
        #朝向
        chaoxiang = li.find('div',attrs={'class':'where'}).text.split('\xa0')[6]
        #店面
        dianmian =li.find('div',attrs={'class':'con'}).text.split('/')[0]
        #楼层
        luceng = li.find('div', attrs={'class': 'con'}).text.split('/')[1]
        #建房时间
        shijian = li.find('div', attrs={'class': 'con'}).text.split('/')[2]
        #房租
        fangzu = li.find('div',attrs={'class':'price'}).find('span').text
        lis.append(title)
        lis.append(address)
        lis.append(huxing)
        lis.append(size)
        lis.append(chaoxiang)
        lis.append(dianmian)
        lis.append(luceng)
        lis.append(shijian)
        lis.append(fangzu)
        datalist.append(lis)
        x+=1
    return datalist

#爬取前10页的数据
for i in range(10):
    print('第',i,'页')
    urls = 'https://sh.lianjia.com/zufang/pg{}/'
    new_url=urls.format(i)
    data = get_html(new_url)
    datass=get_data(data)

# 保存到Excel中
def saveExcel():
    wb=Workbook()
    sheet = wb.create_sheet('链家信息',0)
    sheet.cell(1,1).value='标题'
    sheet.cell(1, 2).value = '小区'
    sheet.cell(1, 3).value = '户型'
    sheet.cell(1, 4).value = '面积'
    sheet.cell(1, 5).value = '朝向'
    sheet.cell(1, 6).value = '店面'
    sheet.cell(1, 7).value = '楼层'
    sheet.cell(1, 8).value = '建房时间'
    sheet.cell(1, 9).value = '房租'
    for i in range(len(datass)):
        for j in range(len(datass[i])):
            sheet.cell(i+2,j+1).value=datass[i][j]
    wb.save('data/链家租房信息.xlsx')
saveExcel()









  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半两风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值