python使用xpath爬取网页数据
from lxml import etree # from fake_useragent import UserAgent import requests from lxml import etree import numpy as np import csv import pandas as pd # # 公共部分url url = 'https://cq.lianjia.com/ershoufang' uurl = 'https://cq.lianjia.com' l=0 # # 请求头伪装 # header = {"User-Agent": fake_useragent.FakeUserAgent().random} # 全局变量# 响应参数 res = requests.get(url) html = etree.HTML(res.text) # lxml实现 Area = html.xpath('/html/body/div[3]/div/div[1]/dl[2]/dd/div/div[1]/a') # 获取地区列表AreaList = {}for are in Area:AreaList[are.text] = uurl + are.xpath('./@href')[0] # 地区存入列表 print(AreaList) list=[] ### 获取地区的地址 with open('./链家网数据集.csv', 'w', newline='',encoding='utf-8') as csvfile:writer = csv.writer(csvfile)writer.writerow(["名字", "区域","标题", "地址", "几室几厅", "房屋面积","朝向", "装修程度", "楼层","建造时间", "结构类型", "关注人数", "发表时间", "单价", "总价"])for areaName, areaUrl in AreaList.items():### 获取区域的地址列表rep = requests.get(areaUrl)# 数据解析html = etree.HTML(rep.text)loc = html.xpath('/html/body/div[3]/div/div[1]/dl[2]/dd/div/div[2]/a') # 获取详细地址locList = {} ### 地址列表for i in loc:# print(i.xpath('./@href')[0])locList[i.text] = uurl + str(i.xpath('./@href')[0]).split('?')[0] # 详细地址存储### 根据地址获取房屋的信息for locName, locUrl in locList.items():if locName in list:continueelse:list.append(locName)print(locName, locUrl)try:resp = requests.get(locUrl)html = etree.HTML(resp.text)MaxNum = html.xpath('//*[@id="content"]/div[1]/div[2]/h2/span/text()')[0]print("共有", int(int(int(MaxNum) // 30) + 1), "页")# 循环获取所有页数for i in range(1, int(int(int(MaxNum) // 30) + 1)):if i > 20:breakprint("这是第", i, "页")# 接收每页的数据resp = requests.get(locUrl + 'pg' + str(i))# 解析数据html = etree.HTML(resp.text)# 获取房源信息列表allList = html.xpath('//*[@id="content"]/div[1]/ul/li[@data-lj_evtid=21624]')# 从列表中提取数据for li in allList:List = []name = li.xpath('./div[1]/div[1]/a/text()') # 小区名称address = li.xpath('./div[1]/div[2]/div/a/text()') # 房屋的所在位置address = address[0] + address[1] # 房屋的所在位置house_info = li.xpath('./div[1]/div[3]/div/text()') # 房间的详细信息time_info = li.xpath('./div[1]/div[4]/text()') # 房屋的关注度tatoll = li.xpath('./div[1]/div[6]/div[1]/span/text()') # 房屋总价wan = li.xpath('./div[1]/div[6]/div[1]/i[2]/text()') # 万tatoll = tatoll[0] + wan[0] # 房屋总价/万val = li.xpath('./div[1]/div[6]/div[2]/span/text()') # 房屋单价# print(areaName, locName, name, address, house_info, time_info, tatoll, val)List.append(areaName), List.append(locName), List.append(name[0]), List.append(address)# 对房子详情细分k = []k = house_info[0].split("|")for j in range(7):if j < len(k):if k[j] == "暂无数据":List.append("NULL")else:List.append(k[j])else:List.append("NULL")# 对关注度细分a = []a = time_info[0].split("/")List.append(a[0]), List.append(a[1]), List.append(tatoll), List.append(val[0])l+=1print(l,List)writer.writerow(List)except Exception as e:print(e)
python使用xpath爬取网页数据相关推荐
- 如何使用python实现简单爬取网页数据并导入MySQL中的数据库
前言:要使用 Python 爬取网页数据并将数据导入 MySQL 数据库,您需要使用 Requests 库进行网页抓取,使用 BeautifulSoup 库对抓取到的 HTML 进行解析,并使用 Py ...
- python用selenium爬取网页数据_Python项目实战:使用selenium爬取拉勾网数据
" 一切不经过项目验证的代码都是耍流氓,今天我们就通过一个简单的招聘网站的数据归档进行当前热门岗位的大数据分析,最后以wordcloud进行显示.本文为数据爬取篇." 项目准备: ...
- python爬取网页内容_你以为Python爬虫只能爬取网页数据吗?APP也是可以的呢!
摘要 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1 抓取APP数据包 方法详细可以参考这篇博文:http://my. ...
- Python零基础爬取网页数据并导出Excel
1.Python环境搭建 Python安装包下载 Python安装 开发工具 pycharm 谷歌驱动,需要下载自己对应版本 2.代码说明 from selenium import webdriver ...
- python爬虫之爬取网页基础知识及环境配置概括
记:python爬虫是爬取网页数据.统计数据必备的知识体系,当我们想统计某个网页的部分数据时,就需要python爬虫进行网络数据的爬取,英文翻译为 spider 爬虫的核心 1.爬取网页:爬取整个网页 ...
- pycharm查看html页面,pycharm爬取网页数据
1 python环境的配置 1.1 安装python文件包,放到可以找到的位置 1.2 右键计算机->属性->高级环境设置->系统变量->Path->编辑->复制p ...
- Python爬虫:Xpath爬取网页信息(附代码)
Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法.但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求.对于一般的数据需求,我们通常需要从一个 ...
- 如何用python爬取网页数据,python爬取网页详细教程
大家好,本文将围绕python怎么爬取网站所有网页展开说明,如何用python爬取网页数据是一个很多人都想弄明白的事情,想搞清楚python如何爬取网页数据需要先了解以下几个事情. 1.如何用Pyth ...
- Python爬取网页数据基本步骤
Python爬取网页数据基本步骤: from urllib import request response = request.urlopen('完整的网址') import requests imp ...
最新文章
- Golang 新手可能会踩的 50 个坑
- 标签页使用及bug解决
- iOS进阶_Socket(Socket简介代码演练)
- Tomcat的类加载器
- P4288 [SHOI2014]信号增幅仪 最小圆覆盖
- ASP.NET MVC 入门11、使用AJAX
- centeros7安装mysql5.6_CentOS7安装MySQL5.6
- 打造运维大脑:翼支付高速发展背后,甜橙金融的云化智能演进
- 计算机网络:overlay(VLAN,VxLAN)、underlay网络、大二层的介绍
- python怎么输出数组全部数据_打印numpy数组的全部内容
- Eclipse CDT 编译wxWidgets
- vb简单控制音量大小及静音的方法
- 域控制器的常规卸载,Active Directory系列之十三
- HADOOP高可用机制
- python读取npy文件 mse_python读取mat或npy文件以及将mat文件保存为npy文件(或npy保存为mat)的方法...
- Php开发Dlp加密,DLP与文档透明加密 后防泄露时代之争
- 10 个Web3 设计灵感网站
- QDateTime相关格式
- [http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将
- 交叉熵cross_entropy的python实现
热门文章
- item_sku - 获取sku详细信息
- 并发编程笔记——第六章 Java并发包中锁原理剖析
- 【目标跟踪】|stark配置 win otb
- 计算机cpu最高温度,详解电脑cpu温度过高几种常用处理方法
- c语言以16进制输出大写字母,【C语言】十六进制形式输出应用程序
- 过滤敏感词汇(trie树实现敏感词过滤)
- 第008篇:ArcGIS中点对落入多边形的位置关系(相邻/相离)的判定
- oracle 删除数据违反约束条件,Oracle启动和禁用约束及删除违反约束的记录
- mysql动态ip域名连接_用本地动态IP连接本地mysql
- c语言输入10个数从小,C语言中,从键盘输入10个数,从小到大排列输出,怎