一、实战场景Python如何收集二手房清单信息并存储文件二、知识点Python基本语法Python文件读写BeautifulSoup网页分析请求发送网络请求tqdm进度条三、菜鸟实战清单页数据采集'''说明:代码供参考和学习使用'''from__future__importannotationsimportosimportplatformimportpandasasppdfrombs4importBeautifulSoupfromtqdmimporttqdm#进度条库frombase_spiderimportBaseSpiderfrombase_url_itemimportUrlItemclassTao365Spider(洗房=BaseSpidert5httparget5collection):://nj.sell.house365.com/district/p1.html"#收藏目标链接list_data_file='tao365_list.csv'#收藏数据保存文件url_items:list[UrlItem]=[]#收藏链接数组PAGE_START=1#收藏起始页numberPAGE_STEP=5#采集步骤def__init__(self):#初始化日志self.init_log()#默认采集的上一页是第1页开始_page=self.PAGE_STARTlist_file_path=self.fileManger.get_data_file_path(self.list_data_file)ifos.path.isfile(list_file_path):#读取list文件,判断上一次采集的页码,支持连续采集self.logger.info("datafileexists")self.data_file_exist=True#计算开始从页码中收集list_df=pd.read_csv(list_file_path,usecols=['pagenumber'],encoding=self.encoding)max_page=pd.DataFrame(list_df[2:]).max()start_page=int(max_page)+1print("集合页面范围:第[%s]页到第[%s]页"%(start_page,start_page+self.PAGE_STEP-1))forpageinrange(start_page,start_page+self.PAGE_STEP):#初始化集合链接url=self.target_url.replace("p1","p"+str(page))#构造集合对象url_item=UrlItem(url=url,page=page)self.url_items.append(url_item)defcrawl_data(self):forurl_itemintqdm(self.url_items):#采集数据url=url_item.urlself.logger.debug("当前采集的页面信息:%s",url)#发送请求,获取数据page_content=self.get_content_from_url(url)#解析数据page_data=self.parse_page(page_content,url_item)self.logger.debug("采集数据量:%s",len(page_data))#保存数据到文件cols=['title','titlelink','propertyid','picture','pagenumber']self.save_to_file(page_data,cols)#防止反爬,随机休眠一段时间self.sleep_random()defparse_page(self,content,url_item:UrlItem):#使用BeautifulSoup标准库解析页面信息soup=BeautifulSoup(content,'lxml')#初始化数组datalist=[]forelementinsoup.找人l("div",attrs={'class':'listItem'}):#解析单条信息#判断是否为有效数据ifelement.img.has_attr("data-original"):#解析入turn,title,titlelink,listingid,图片title=element.find("a",class_='listItem__title').text.strip()title_link=element.find("a",class_='listItem__title')['href']house_id=element.find("a",class_='listItem__title')['house-id']image=element.img["data-original"]datalist.append([title,title_link,house_id,图片,url_item.page])returndatalistdefrun(self):self.logger.debug("collectionstart")self.crawl_data()self.logger.debug("collectionend")if__name__=='__main__':print("采集365淘房二手房信息")spider=Tao365Spider()spider.run()print("python版",platform.python_version())将采集到的数据存储到文件中defsave_to_file(self,data,cols):#保存到文件file_path=self.fileManger.get_data_file_path(self.list_data_file)#初始化数据框=pd.DataFrame(data)ifnotself.data_file_exist:#第一次writewithlistheader,清空原文件frame.columns=colsframe.to_csv(file_path,encoding=self.encoding,index=None)self.data_file_exist=True#写入后更新数据文件的状态else:#不写入列表的头部,另外写入frame.to_csv(file_path,mode="a",encoding=self.encoding,index=None,header=0)self.logger.debug("文件保存完成")运行结果运行截图合集365淘房二手房信息收集页面范围:第[1]页到第[5]页100%|██████████|5/5[00:10<00:00,2.12s/it]python版本3.9.10进程结束,退出码为0结果文件资源链接https://download.csdn.net/dow...菜鸟实战,保持学习!
