位置: IT常识 - 正文

python爬取网站数据(含代码和讲解)(python爬取网站数据毕业论文)

编辑:rootadmin
python爬取网站数据(含代码和讲解)

推荐整理分享python爬取网站数据(含代码和讲解)(python爬取网站数据毕业论文),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Python爬取网站数据库技巧,python爬取网站数据并导入excel,python爬取网站数据毕业论文,python爬取网站数据,python爬取网站数据并做成表格,python爬取网站数据,python爬取网站数据,python爬取网站数据,内容如对您有帮助,希望把文章链接给更多的朋友!

提示:本次爬取是利用xpath进行,按文章的顺序走就OK的;

文章目录

前言

一、数据采集的准备

1.观察url规律

2.设定爬取位置和路径(xpath)

二、数据采集

1. 建立存放数据的dataframe

2. 开始爬取

3. 把数据导出成csv表格

总结


前言

这次爬取的网站是房天下网站;

其中包含很多楼盘信息:https://newhouse.fang.com/house/s/b81-b91/

我在网站上进行了一步筛选,即选取北京及北京周边的房源,各位要是想爬取其他城市的房源信息也很简单,改一下url信息即可。

一、数据采集的准备1.观察url规律

观察到北京及周边地区的房源有很多网页,翻几页就能发现url的规律:

网址就是:https://newhouse.fang.com/house/s/  +  b81-b9X  +  /   ;其中X是页码

 利用for循环遍历所有网页:

for i in range(33): # 每页20个小区,共648个小区 url = 'https://newhouse.fang.com/house/s/b81-b9' + str(i+1) + '/'

pip 安装fake_useragent库:

fake-useragent可以伪装生成headers请求头中的User Agent值,将爬虫伪装成浏览器正常操作。

!pip install fake_useragent

导入接下来会用到的包: 

## 导包from lxml import etreeimport requestsfrom fake_useragent import UserAgentimport pandas as pdimport randomimport timeimport csv设置请求参数:需要大家替换的有'cookie'和'referer'两项的值:python爬取网站数据(含代码和讲解)(python爬取网站数据毕业论文)

'cookie':每次访问网站服务器的时候,服务器都会在本地设置cookie,表明访问者的身份。记得每次使用时,都要按照固定方法人工填入一个 cookie。

 'referer':请求参数,标识请求是从哪个页面过来的。

# 设置请求头参数:User-Agent, cookie, refererheaders = { 'User-Agent' : UserAgent().random, 'cookie' : "global_cookie=kxyzkfz09n3hnn14le9z39b9g3ol3wgikwn; city=www; city.sig=OGYSb1kOr8YVFH0wBEXukpoi1DeOqwvdseB7aTrJ-zE; __utmz=147393320.1664372701.10.4.utmcsr=mp.csdn.net|utmccn=(referral)|utmcmd=referral|utmcct=/mp_blog/creation/editor; csrfToken=KUlWFFT_pcJiH1yo3qPmzIc_; g_sourcepage=xf_lp^lb_pc'; __utmc=147393320; unique_cookie=U_bystp5cfehunxkbjybklkryt62fl8mfox4z*3; __utma=147393320.97036532.1606372168.1664431058.1664433514.14; __utmt_t0=1; __utmt_t1=1; __utmt_t2=1; __utmt_t3=1; __utmt_t4=1; __utmb=147393320.5.10.1664433514", # 设置从何处跳转过来 'referer': 'https://newhouse.fang.com/house/s/b81-b91/'}

具体更改方法请见链接:

【腾讯文档】'cookie'和 'referer'的更改方法:https://docs.qq.com/doc/DR2RzUkJTQXJ5ZGt6

只能走链接了,一直审核不过555~ 

2.设定爬取位置和路径(xpath)

因为爬取数据主要依托于'目标数据所在位置的确定’,所以一定先要搞清楚目标数据的位置(位于div的哪一块);

先发送请求: 

url = 'https://newhouse.fang.com/house/s/b81-b91/'# 首页网址URLpage_text = requests.get(url=url, headers=headers).text# 请求发送tree = etree.HTML(page_text)#数据解析

我想爬取的数据主要就是:楼盘名称、评论数、房屋面积、详细地址、所在区域、均价 5项数据。

代码已经贴在下面了,具体方法描述还是走个链接: 

【腾讯文档】获取具体爬取位置的讲解https://docs.qq.com/doc/DR3BFRW1lVGFRU0Na

# 小区名称name = [i.strip() for i in tree.xpath("//div[@class='nlcd_name']/a/text()")]print(name)print(len(name))# 评论数commentCounts = tree.xpath("//span[@class='value_num']/text()")print(commentCounts)print(len(commentCounts))# 房屋面积buildingarea = [i.strip() for i in tree.xpath("//div[@class='house_type clearfix']/text()")]print(buildingarea)print(len(buildingarea))# 详细地址detailAddress = tree.xpath("//div[@class='address']/a/@title")print(detailAddress)print(len(detailAddress))# 所在区district = [i.strip() for i in tree.xpath("//div[@class='address']//span[@class='sngrey']/text()")]print(district)print(len(district))# 均价num = tree.xpath("//div[@class='nlc_details']/div[@class='nhouse_price']/span/text() | //div[@class='nlc_details']/div[@class='nhouse_price']/i/text()")unit = tree.xpath("//div[@class='nlc_details']/div[@class='nhouse_price']/em/text()")price = [i+j for i,j in zip(num, unit)]print(price)print(len(price))

此时采集到的数据还包含着:[]方括号、—横杠、“平米”等符号或者单位,所以要对数据进行简单的split处理,把真正需要的数据提取出来:

# 评论数处理commentCounts = [int(i.split('(')[1].split('条')[0]) for i in commentCounts]print(commentCounts)# 详细地址处理detailAddress = [i.split(']')[1] for i in detailAddress]print(detailAddress)# 所在区字段处理district = [i.split('[')[1].split(']')[0] for i in district]print(district)# 房屋面积处理t = []for i in buildingarea: if i != '/' and i != '': t.append(i.split('—')[1].split('平米')[0])print(t)print(len(t))二、数据采集1. 建立存放数据的dataframedf = pd.DataFrame(columns = ['小区名称', '详细地址', '所在区', '均价', '评论数'])df2. 开始爬取

这里图方便就只爬取了前10页,因为后面的房源就经常少信息,要么没有面积信息,要么没有所在区域。 

for k in range(10): url = 'https://newhouse.fang.com/house/s/b81-b9' + str(k+1) + '/' page_text = requests.get(url=url, headers=headers).text #请求发送 tree = etree.HTML(page_text) #数据解析 # 小区名称 name = [i.strip() for i in tree.xpath("//div[@class='nlcd_name']/a/text()")] # 评论数 commentCounts = tree.xpath("//span[@class='value_num']/text()") # 详细地址 detailAddress = tree.xpath("//div[@class='address']/a/@title") # 所在区 district = [i.strip() for i in tree.xpath("//div[@class='address']//text()")] # 均价 num = tree.xpath("//div[@class='nlc_details']/div[@class='nhouse_price']/span/text() | //div[@class='nlc_details']/div[@class='nhouse_price']/i/text()") unit = tree.xpath("//div[@class='nlc_details']/div[@class='nhouse_price']/em/text()") price = [i+j for i,j in zip(num, unit)] #评论数处理 commentCounts = [int(i.split('(')[1].split('条')[0]) for i in commentCounts] #详细地址处理 tmp1 = [] for i in detailAddress: if ']' in i: tmp1.append(i.split(']')[1]) continue tmp1.append(i) detailAddress = tmp1 #所在区处理 tmp2 = [] for i in district: if ']' in i and '[' in i: tmp2.append(i.split(']')[0].split('[')[1]) district = tmp2 dic = {'小区名称':name, '详细地址':detailAddress, '所在区':district, '均价':price, '评论数':commentCounts} df2 = pd.DataFrame(dic) df = pd.concat([df,df2], axis=0) print('第{}页爬取成功, 共{}条数据'.format(k+1, len(df2)))print('全部数据爬取成功')3. 把数据导出成csv表格df.to_csv('北京小区数据信息.csv',index=None)

总结

说实话,本文使用的爬取方法简单而且信息正确,但是存在一些不足,比如面对楼盘的部分信息空缺时,就无法按照null来采集,而是会报错,所以我现有的解决方法就是在循环中人工去设置条件,跳过空缺信息。

我会继续优化这个方法的~

本文链接地址:https://www.jiuchutong.com/zhishi/299051.html 转载请保留说明!

上一篇:从零开始,三分钟内用Python快速自建一个私有化 ChatGpt 聊天机器人网站(从零开始文章)

下一篇:Vue3中 内置组件 Teleport 详解(vue的内置组件)

  • 微博推广营销方法:做有营销的内容(微博推广营销方式)

    微博推广营销方法:做有营销的内容(微博推广营销方式)

  • wps填充设置在哪里(wpsexcel的填充功能在哪)

    wps填充设置在哪里(wpsexcel的填充功能在哪)

  • 华为nova5支持mhl吗(华为nova5支持有线投屏吗)

    华为nova5支持mhl吗(华为nova5支持有线投屏吗)

  • 小爱音箱如何恢复出厂设置(小爱音箱如何恢复出厂模式)

    小爱音箱如何恢复出厂设置(小爱音箱如何恢复出厂模式)

  • 留言仅彼此可见对方知道吗(留言仅彼此可见是哪一方设置)

    留言仅彼此可见对方知道吗(留言仅彼此可见是哪一方设置)

  • 华为手机悬浮球不见了怎么办(华为手机悬浮球怎么打开)

    华为手机悬浮球不见了怎么办(华为手机悬浮球怎么打开)

  • ipad腾讯会议屏幕共享没有声音(IPAD腾讯会议屏幕共享只共享相册)

    ipad腾讯会议屏幕共享没有声音(IPAD腾讯会议屏幕共享只共享相册)

  • 抖音有特别关注吗(抖音没有1000粉丝怎么开播)

    抖音有特别关注吗(抖音没有1000粉丝怎么开播)

  • 苹果x怎么清理微信存储空间(苹果x怎么清理垃圾清理)

    苹果x怎么清理微信存储空间(苹果x怎么清理垃圾清理)

  • qq2g在线有几种可能(qq2g在线是什么意)

    qq2g在线有几种可能(qq2g在线是什么意)

  • ipadair3支持pencil2吗(ipadair3支持pencil一代还是二代)

    ipadair3支持pencil2吗(ipadair3支持pencil一代还是二代)

  • opporeno2是不是5G手机(opporeno2是不是曲面屏)

    opporeno2是不是5G手机(opporeno2是不是曲面屏)

  • mdt6是什么型号(mde6s什么型号多少钱)

    mdt6是什么型号(mde6s什么型号多少钱)

  • 北京阿里通信是什么(阿里通信官方)

    北京阿里通信是什么(阿里通信官方)

  • 微信群怎么看谁是管理员(微信群怎么看谁退出了群聊)

    微信群怎么看谁是管理员(微信群怎么看谁退出了群聊)

  • wps姓名对齐怎么设置(wps姓名对齐)

    wps姓名对齐怎么设置(wps姓名对齐)

  • 怎样解除微信绑定的app(怎样解除微信绑定的银行卡)

    怎样解除微信绑定的app(怎样解除微信绑定的银行卡)

  • 抖音怎么查看定位的位置(抖音怎么查看定位)

    抖音怎么查看定位的位置(抖音怎么查看定位)

  • 候补抢票和抢票有什么不一样(候补抢票和抢票哪个成功率大)

    候补抢票和抢票有什么不一样(候补抢票和抢票哪个成功率大)

  • 苹果11多少美金(iphone11多少美金)

    苹果11多少美金(iphone11多少美金)

  • 省钱快报提现安全吗(省钱快报的礼金怎么提现)

    省钱快报提现安全吗(省钱快报的礼金怎么提现)

  • 手机sos报警如何关闭(手机sos报警如何关闭老年机)

    手机sos报警如何关闭(手机sos报警如何关闭老年机)

  • 按键精灵怎么设置20分钟按一个键(按键精灵怎么设置循环)

    按键精灵怎么设置20分钟按一个键(按键精灵怎么设置循环)

  • 坚果手机怎样换主题(坚果手机怎么更换壁纸)

    坚果手机怎样换主题(坚果手机怎么更换壁纸)

  • 苹果手机笔记在哪里(苹果的笔记)

    苹果手机笔记在哪里(苹果的笔记)

  • 小规模纳税人定期定额征收的怎么报税
  • 增值税发票必须本人去开吗
  • 期末结转的内容
  • 发票进项和销项差一个字
  • 交通补贴税前扣除标准
  • 出口退税进项发票认证勾选
  • 增值税包括哪些税种
  • 固定资产改变用途进项转出
  • 结转上年度的企业所得税会计分录?
  • 合并利润表抵消事项包括
  • 润滑油经销需要什么资质
  • 生产共同费用每个月都有摊销吗?
  • 资本公积提取比例怎么算
  • 企业为什么要签订集体合同
  • 小规模企业如何
  • 科技研发政策
  • 销售不动产增值税计税依据
  • 银行支票怎么用
  • 软件固定资产还是无形资产
  • 收到财政奖励扶持资金账务处理?
  • 没有走公户的发票费用怎么做账
  • 银行存款利息的计算方法
  • coms恢复默认设置
  • 应收账款周转天数和应收账款周转率的关系
  • 电脑桌面图标如何更改自定义图片
  • 如何禁用开始目录的app自动推荐
  • phpemail正则
  • 华为分享平时可不可以打开
  • Linux怎么修改账户名
  • winpe怎么安装到u盘
  • 三七粉的功效与作用及正确吃法
  • 财务费用属于期间汇转账户吗
  • 利用php实现开心麻花
  • 视同销售收入税法处理
  • 其他应收款超过一年是12个月吗?
  • 投资收益是否缴增值税
  • 布鲁克斯岭
  • framework3.5怎么打开
  • 社保调整基数后 两个月没变化
  • 将资本公积转为实收资本什么变了
  • 为什么要划分等价类
  • web前端性能响应时间
  • 股本减少是什么意思
  • 省外的发票能入账吗
  • 资产处置损益怎么结转到本年利润
  • 会计信息不采集有什么后果
  • 加工费能直接抵税吗
  • 用vue做的企业项目
  • 织梦怎么新建页面
  • layuitablechecked获取选中数据方式
  • sqlserver 数据集字符集种类
  • 居民和非居民企业的区别是什么
  • 无形资产摊销是按原值吗
  • 预算会计与企业会计的区别感悟
  • 外购商品发给员工要交个税吗
  • 员工周转房管理办法
  • 企业购买设备抵税
  • 水利建设基金可以零申报吗
  • 企业营运能力分析
  • 成本会计工作主要内容
  • mysql多表查询方式
  • linux如何安装c语言编译器
  • w7系统ip地址
  • mac系统怎么删除用户
  • spkrmon.exe - spkrmon是什么进程
  • 在linux操作系统中,/etc/rc.d/init.d
  • win7电脑dns错误不能上网怎么办
  • linux vmware命令行
  • cocos2dx-3.1.1 labelttf与label
  • js 函数执行顺序
  • 搭建oj
  • js判断ua
  • js初级教程
  • javascript程序设计教程
  • javascript面向对象编程指南第三版
  • 开票软件重置密码去哪里
  • 税务登记注销证明是什么样的
  • 国家电子税务局app下载
  • 广州市公安局分局待遇
  • 2023年河北居民养老保险缴费时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设