xpath练习

news/2024/7/19 11:15:39 标签: python, 爬虫

xpath练习

  • 工具
  • 目的
  • 代码
  • 运行结果

工具

pycharm

目的

python">'''
网站:链家网       网址:https://sh.lianjia.com/ershoufang/pudong/pg2/
用xpath做一个简单的爬虫,爬取链家网里的租房信息获取标题,位置,房屋的格局(三室一厅),关注人数,单价,总价
'''

代码

python"># 用xpath,需要用到lxml,利用etree.HTML,将字符串转化为Element对象,Element对象具有xpath的方法,返回结果的列表,能够接受bytes类型的数据和str类型的数据
import requests
from lxml import etree
import re
import json

house = list()
url = 'https://sh.lianjia.com/ershoufang/pudong/pg2/'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'}
response = requests.get(url,headers=headers).text
# print(response)
html = etree.HTML(response)
# print(type(html))  # <class 'lxml.etree._Element'>
lis = html.xpath('//ul[@class="sellListContent"]/li')
print(lis)
for li in lis:
    item = dict()
    item['title'] = li.xpath('.//div[@class="info clear"]/div[@class="title"]/a/text()')[0].strip()
    item['position'] = li.xpath('.//div[@class="info clear"]/div[@class="flood"]//a[1]/text()')[0].strip()
    item['address'] = li.xpath('.//div[@class="info clear"]/div[@class="address"]//text()')[0].split(' | ')[0].strip()
    item['person'] = \
        re.match('\d*',li.xpath('.//div[@class="info clear"]/div[@class="followInfo"]//text()')[0].split(' / ')[0]).group()
    item['unitPrice'] = \
        li.xpath('.//div[@class="info clear"]/div[@class="priceInfo"]/div[@class="unitPrice"]//text()')[0].strip()
    item['totalPrice'] = \
        li.xpath('.//div[@class="info clear"]/div[@class="priceInfo"]'
                 '/div[@class="totalPrice totalPrice2"]/span/text()')[0].strip()
    house.append(item)

with open("house.json",'w',encoding='utf-8') as f:
    json.dump(house,f,ensure_ascii=False,indent=2)

运行结果

见资源


http://www.niftyadmin.cn/n/4934992.html

相关文章

JZ36二叉搜索树与双向链表

题目地址&#xff1a;二叉搜索树与双向链表_牛客题霸_牛客网 题目回顾&#xff1a; 解题思路&#xff1a; 由题目可知&#xff0c;这里的二叉搜索树转成双向链表的符合左根右的逻辑顺序&#xff0c;且是一个递增序列。 创建两个指针&#xff0c;一个指向head&#xff0c;一个…

“深入剖析JVM内部原理:解密Java虚拟机的奥秘“

标题&#xff1a;深入剖析JVM内部原理&#xff1a;解密Java虚拟机的奥秘 摘要&#xff1a;本文将深入探讨Java虚拟机&#xff08;JVM&#xff09;的内部原理&#xff0c;包括其架构、内存管理、垃圾回收机制、即时编译器等关键组成部分。通过解密JVM的奥秘&#xff0c;我们将更…

分布式 - 消息队列Kafka:Kafka生产者发送消息的方式

文章目录 1. Kafka 生产者2. kafaka 命令行操作3. kafka 生产者发送消息流程4. Kafka 生产者的创建5. Kafka 生产者发送消息1. 发送即忘记2. 同步发送3. 异步发送 6. Kafka 消息对象 ProducerRecord 1. Kafka 生产者 不管是把Kafka作为消息队列、消息总线还是数据存储平台&…

redis的Key的过期策略是如何实现的?

Key的过期策略 一个redis中可能同时存在很多很多key&#xff0c;这些key可能有很大一部分都有过期时间&#xff0c;此时&#xff0c;redis服务器咋知道哪些key已经过期要被删除&#xff0c;哪些key还没有过期&#xff1f; 如果直接遍历所有的key&#xff0c;显然是行不通的&am…

23.8.10 杭电暑期多校8部分题解

1008 - Expectation of Rank 题目大意 一个 n ∗ n n*n n∗n 的矩阵在 m o d p mod\space p mod p 意义下随机生成&#xff0c;问矩阵的秩的期望为多少 解题思路 某一行要对秩产生贡献&#xff0c;那肯定与之前所有行之间都不存在线性相关 由此考虑dp&#xff0c; f i ,…

表的进阶查询

聚合查询 聚合函数 注意点: ①后面可以加where限定条件 ②可以使用as别名 count(列名) 统计该列有几行数据, 其中null会被忽略 sum(列名) 求该列所有数据的总和 avg(列名) 求该列所有数据的平均值 max(列名) 求该列的最大值数据 min(列名) 求该列的最小值数据 group by 语法 …

腾讯云服务器CVM实例族标准型/内存/高IO/大数据/GPU有什么区别?

腾讯云服务器CVM有多种实例族&#xff0c;如标准型S6、标准型S5、SA3实例、高IO型、内存、计算型及GPU型实例等&#xff0c;如何选择云服务器CVM实例规格呢&#xff1f;腾讯云服务器网建议根据实际使用场景选择云服务器CVM规格&#xff0c;例如Web网站应用可以选择标准型S5或S6…

Java面试——一分钟搞懂限流算法

为什么限流 运营网站&#xff0c;经常会遇到各种挑战&#xff1a;某黑客发起DoS攻击、网络爬虫网页抓取、商品秒杀活动、双十一与618等场景&#xff0c;会使流量突然激增&#xff0c;如果不限制流量的访问就会使系统宕机。 常见的限流算法 1.漏桶算法&#xff08; LEAKY BUC…