来自 电脑系统 2019-12-23 07:03 的文章
当前位置: 金沙澳门官网网址 > 电脑系统 > 正文

请教高人,用Python按月爬取目的小区房源音信

各位达人,求救个问题,我用python爬出来的数据,不知道什么原因是空的。本人不太会python,是在别人的程序基础上改出来的。现将编码复制如下importrequestsfrombs4importBeautifulSoupimportrandomimporttimeimportdatetimeimportxlwtworkbook=xlwt.Workbook()curDate=str(datetime.date.today().year)+"-"+str(datetime.date.today().month)+"-"+str(datetime.date.today().day)worksheet=workbook.add_sheet(curDate)worksheet.write(0,0,'Reseller')worksheet.write(0,1,'ModelDesription')worksheet.write(0,2,'Model')worksheet.write(0,3,'SRP')worksheet.write(0,4,'Currentprice')worksheet.write(0,5,'URL')rowcount=1#modelurl='+-bracket+-lpbpris_min=pris_max=ftg=8246'#modelurl='+-bracket+-lpbpris_min=pris_max=ftg=8509'modelurl={'PBTech':'+linkbilligast=0view=b',}forSeller,sellerlinkinmodelurl.items():user_agent_list=["Mozilla/5.0(Windows;U;WindowsNT6.1;en-US;rv:1.9.1.6)Gecko/20091201Firefox/3.5.6","Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.1(KHTML,likeGecko)Chrome/22.0.1207.1Safari/537.1","Mozilla/5.0(X11;CrOSi6862268.111.0)AppleWebKit/536.11(KHTML,likeGecko)Chrome/20.0.1132.57Safari/536.11","Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/536.6(KHTML,likeGecko)Chrome/20.0.1092.0Safari/536.6","Mozilla/5.0(WindowsNT6.2)AppleWebKit/536.6(KHTML,likeGecko)Chrome/20.0.1090.0Safari/536.6","Mozilla/5.0(WindowsNT6.2;WOW64)AppleWebKit/537.1(KHTML,likeGecko)Chrome/19.77.34.5Safari/537.1","Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/536.5(KHTML,likeGecko)Chrome/19.0.1084.9Safari/536.5","Mozilla/5.0(WindowsNT6.0)AppleWebKit/536.5(KHTML,likeGecko)Chrome/19.0.1084.36Safari/536.5","Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1063.0Safari/536.3","Mozilla/5.0(WindowsNT5.1)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1063.0Safari/536.3","Mozilla/5.0(Macintosh;IntelMacOSX10_8_0)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1063.0Safari/536.3","Mozilla/5.0(WindowsNT6.2)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1062.0Safari/536.3","Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1062.0Safari/536.3","Mozilla/5.0(WindowsNT6.2)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1061.1Safari/536.3","Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1061.1Safari/536.3","Mozilla/5.0(WindowsNT6.1)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1061.1Safari/536.3","Mozilla/5.0(WindowsNT6.2)AppleWebKit/536.3(KHTML,likeGecko)Chrome/19.0.1061.0Safari/536.3","Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/535.24(KHTML,likeGecko)Chrome/19.0.1055.1Safari/535.24","Mozilla/5.0(WindowsNT6.2;WOW64)AppleWebKit/535.24(KHTML,likeGecko)Chrome/19.0.1055.1Safari/535.24"]UA=random.choice(user_agent_list)headers={'User-Agent':UA}time.sleep(2*random.random())wbdata=requests.get(sellerlink,headers=headers).texttime.sleep(2*random.random())soup=BeautifulSoup(wbdata,"lxml")time.sleep(2*random.random())table=soup.find('ul',id='div_produktlista')forliintable.find_all('li'):ModelTitle=""price=0curURL=""if(notli.select('div')[0].find('a',attrs={'style':'font-size:14px;line-height:16px'})isNone):ModelTitle=li.select('div')[0].find('a',attrs={'style':'font-size:14px;line-height:16px'}).text.replace("n","")curURL=""+li.select('div')[0].find('a',attrs={'style':'font-size:14px;line-height:16px'})['href']else:ModelTitle=li.select('div')[0].text.replace("n","")price=li.select('div')[1].find('a',attrs={'class':'price'}).text.replace("$","")worksheet.write(rowcount,0,Seller)worksheet.write(rowcount,1,ModelTitle)worksheet.write(rowcount,4,price)worksheet.write(rowcount,5,curURL)rowcount=rowcount+1print(Seller+";"+ModelTitle+";"+price)workbook.save('./NZPriceCheck'+curDate+'.xls')

一直想按照某个小区按月统计二手房源的价格趋势,虽然售房网站上点进去某个小区直接看得到,但是总感觉有问题,不如自己直接获取数据来的踏实。如果要买房子,总是有自己的目标范围,像之前我用R提取的房源数据,按照一定特征进行了分类,那么可以按照自己心仪的区域有选择地关注某些小区的价格变动。我关注了若干个小区,从今年开始按月统计二手房源的价格。当然最后统计出来的不可能精确,但是房源价格的趋势我倒是很感兴趣,当作未来的一个参考。

以【房地产门户|房地产网】- 房天下为例。

首先找到感兴趣的小区所在网页,比如像中大未来城二手房出售信息-中大未来城小区网-昆山房天下。

网页格式类似于“小区名.http://fang.com/chushou/”,前面的小区名可以用循环列表来处理。接下来需要获得最大的页码。观察最后的翻页,有一个“末页”可以定位。

图片 1

获取末页所在的URL。

last_page = soup.find_all('a', id='PageControl1_hlk_last')

接着从末页的页面源码获得这一页的页码数字。当然可能有一页或者多页,需要用末页URL是否存在来判断。

if len(last_page) != 0:    

        last_url = last_page[0].attrs['href']    

        response_last = requests.get(last_url, headers=headers)    

        soup_last = BeautifulSoup(response_last.text, 'lxml')    

        total_page = soup_last.find('a', class_='pageNow').get_text()

else:    

        total_page = soup.find('a', class_='pageNow').get_text()

获得页码最大数字后可以拼接得到新的URL列表,也就是房源所在的所有页面URL。

本文由金沙澳门官网网址发布于电脑系统,转载请注明出处:请教高人,用Python按月爬取目的小区房源音信

关键词: