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()
python爬虫——beautifulsoup保存图片
最新推荐文章于 2024-07-22 17:25:13 发布