今天CX姐要求我从China Webmaster上收集排名前200名的房地产网站的排名、网址和简介以及评分信息。在完成任务之后我把程序重新优化了一下,写成了一个类,方便下次重复使用。最终的返回结果是一个pandas中的dataframe,可以写成excel。

class Rank:def __init__(self,start,end):from bs4 import BeautifulSoup from urllib import requestimport reimport pandas as pdimport numpy as npimport urllib.parse as urpimport timeimport urllib.request as urrself.limit = endself.begin = startdef __upbond__(self):if self.limit - (self.limit // 30)*30 >= 0:return (self.limit // 30)+1def __func1__(self,r1):return r1.find('a').get_text()def __func2__(self,r1):return r1.find('span').get_text()def __func3__(self,r2):return r2.find('strong').get_text()def __func4__(self,r2):return re.findall(r'\d?\d?\d?\d?',r2.find('span').get_text())[0]def __func5__(self,r1):return 'http://top.chinaz.com'+r1.find('a').get('href')def __func6__(self,url):req3 = request.urlopen(url)res3 = req3.read()bs3 = BeautifulSoup(res3,'lxml')return bs3.find_all('p',attrs={'class':'webIntro'})[0].get_text()def __scripy1__(self,num):if num == 1:url1 = 'http://top.chinaz.com/hangye/index_shenghuo_fangchang_alexa.html'return self.__scrapy2__(url1)if num > 1:url1 = 'http://top.chinaz.com/hangye/index_shenghuo_fangchang_alexa_'+str(num)+'.html'return self.__scrapy2__(url1)def __scrapy2__(self,url1):req1 = request.urlopen(url1)res1 = req1.read()bs1 = BeautifulSoup(res1,'lxml')result1 = bs1.find_all('div',attrs={'class':'CentTxt'} )result2 = bs1.find_all('div',attrs = {'class':'RtCRateCent'})arr1 = pd.Series(result1)arr2 = pd.Series(result2)df = pd.DataFrame([],columns=['name','web','rank','score','web2'])df['name'] = arr1.apply(self.__func1__)df['web'] =  arr1.apply(self.__func2__)df['rank'] = arr2.apply(self.__func3__)df['score'] = arr2.apply(self.__func4__)df['web2'] = arr1.apply(self.__func5__)return dfdef __scrapy3__(self):final_df = pd.DataFrame([],columns=['name','web','rank','score','web2'])start_page = self.begin // 30for i in np.arange(start_page,self.__upbond__()+1):final_df = pd.concat([final_df,self.__scripy1__(i)],ignore_index=True)return final_dfdef scrapy(self):df = self.__scrapy3__()df['intro'] = np.nandf['intro'] = df['web2'].apply(self.__func6__)return df

从China Webmaster上收集房地产网站排名、网址和简介相关推荐

  1. Google、微软、阿里、腾讯、百度这些大公司在GitHub上开源投入排名分析 | CSDN原力计划...

    扫码参与CSDN"原力计划" 作者 | 村中少年 来源 | CSDN原力计划获奖作品 现在有越来越多的公司都参与了开源,其背后有各自的目的所在,姑且不予讨论.本文是从多个方面分析各 ...

  2. 转]网络上收集的Visual Studio 2008的一些小技巧

    [转]网络上收集的Visual Studio 2008的一些小技巧 标签: 电脑 visual 光标 ide 高亮 杂谈 分类: 学习 1,Visual Studio 2008自带的1000多个 Wi ...

  3. 浙江嘉兴计算机学校排名,嘉兴计算机考研线上课程实力排名

    嘉兴计算机考研线上课程实力排名 冲刺分清主次现在各科的复习已经进入**后的收尾工作了,现在基本上就是扫除知识盲区,进行知识点的查缺补漏非法学法律硕士考研报考条件 而且,妥协次就会有第二次,所以一开始就 ...

  4. 线上写代码的网址 jsbin

    线上写代码的网址 jsbin JS Bin - Collaborative JavaScript Debugging

  5. 各大公司在GitHub上开源投入排名分析

    现在有越来越多的公司都参与了开源,其背后有各自的目的所在,姑且不予讨论.本文是从多个方面分析各大公司在开源上的投入情况.由于全世界绝大多数的开源项目都有发布到Github上,因此本文将会基于GitHu ...

  6. 西北农林科技大学与陕西师范大学计算机,陕西师大比较稳定!如何看待陕西19校在四大排行榜上的综合排名!...

    国内有四个比较知名的大学排行榜,分别是金苹果.校友会.武书连.软科,虽然各个榜单所侧重的点不一样,社会口碑也是褒贬不一,但是,存在即合理,如果把各个榜单的排名换算成一个平均值,考虑的综合指标就比较多了 ...

  7. GitHub上收集的最全的前端资源汇总(包括前端学习、求职、开发资源)

    http://www.imooc.com/article/12645 个人结合github上各位大神分享的资源进行了简单的汇总整理,每一个条目下面都有丰富的资料,是前端学习.工作的好帮手. 项目地址: ...

  8. chatgpt不好使?那是你不会问,github上收集的100多种问法,让你快速玩转chatgpt

    你觉得没什么可用,是因为你不会用 github上大牛门收集的一百多种问法,快去试试吧 原文地址:https://github.com/f/awesome-chatgpt-prompts 由于是官方问法 ...

  9. 从网络上收集的爬虫工具,推荐基于python的工具

    Java爬虫 1.Arachnid Arachnid是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开 ...

最新文章

  1. 【Java面试题】13 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?...
  2. C#教程3:基本语言结构
  3. 【python】【scrapy】使用方法概要(三)
  4. 04_css盒子模型
  5. “Replit 威胁我,要求我关闭我的开源项目!”
  6. IOS Emoji表情
  7. 计算机设计大赛西北地区赛,我校学生在中国大学生计算机设计大赛西北地区赛中获佳绩...
  8. 使用 FUSE 开发自己的文件系统
  9. Ubuntu安装完驱动后进不去界面
  10. 安拆网:脚手架钢管规格及施工要求
  11. OOK调制解调的FPGA实现,求Verilog代码
  12. vm linux安装增强功能,VirtualBox虚拟机CentOS安装增强功能Guest Additions(示例代码)
  13. 知道一个公司的网站地址,怎么快速获取邮箱。
  14. luat驱动LCD屏幕
  15. 百鸡问题扩展-N鸡问题
  16. 82.android 简单的当前运行内存清理
  17. Netty入门与实战:仿写微信IM即时通讯系统
  18. Java中amp;amp;和amp;以及||和|的区别
  19. could not locate named parameter [***]; nested exception is org.hibernate.QueryParameterException: c
  20. 日常工作要想有效提高工作效率 常用的在线工具网站

热门文章

  1. json 学习之(json基础)
  2. vim操作方式的PDF阅读器 okular
  3. 【Tableau 图表大全21】之箱型图(盒须图)
  4. ChatGPT通过中国数据库系统工程师(DBA)认证?
  5. 百万基建狂魔们的赛博世界
  6. 基于Java实现的图片搜索系统
  7. 利用人工智能和进化分析,绘制出真核生物的蛋白质之间相互作用的3D模型
  8. PHP时间戳和日期互转换
  9. php 时间戳与日期的转换
  10. 2022年双十一洗面奶选购指南