python爬虫小项目---自如网价格的一些思路

本文介绍了一种特殊的爬虫技术,针对网页上以图片形式显示的价格信息进行抓取和解析。通过分析网页源码定位图片URL及坐标,利用OCR技术识别价格,并结合XPath获取商品标题,最终形成结构化的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信大家都入过pytesseract,PIL,的tesseract等库的坑吧,
一入大坑深似海啊…

这里呢我总结了一下我个人的思路, 代码没有去做封装, 只是简单的去 做了一个价格的爬取.

import requests
import re
import json
from lxml import etree
import time
from chaojiying import Chaojiying_Client
# 每页请求的地址
url2 = 'http://www.ziroom.com/z/nl/z3.html?p=0'
# url = 'http://www.ziroom.com/z/vr/61610357.html'
# 构造请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
}
# 获取数据
res = requests.get(url=url2,headers=headers)
html = res.text
# 正则匹配 图片地址
roomid = re.findall(r'var ROOM_PRICE = (.*?);',html)[0]
# 转为python类型字典
roomid = json.loads(roomid)
#拼接不完整的图片地址
image_url = 'http:' + roomid['image']
# 取到匹配到的图片地址的  所对应的价格的坐标
zuobiao = roomid['offset']
# 请求图片地址
bsa = requests.get(image_url)
# 时间戳拼接 图片名称
filename = str(time.time()) + '.png'
# 以二进制写入图片 下载保存_______>>>这里需要注意我们用的是requests 请求 所以 想要 保存图 必须再次get图片Url  然后用 bsa.content 写入
with open(filename,'wb') as f:
    f.write(bsa.content)

'''将验证码通过打码平台获取验证码内容  返回一个字符串'''
chaojiyi2 = Chaojiying_Client('ipython','123456789','5000')
im = open(filename,'rb').read()
code = chaojiyi2.PostPic(im,5000)
filetext = list(code['pic_str'])
#循环坐标 作为索引 取出 价格并 保存为str
zuobiaolist = []
for i in zuobiao:
    str = ''
    for var in i :
        text = filetext[var]
        str+=text
    zuobiaolist.append(str)
# xpath 匹配  先将HTML 转为文档 xml
html1 = etree.HTML(html)
# 匹配出标题
titledict = []
title = html1.xpath('//div[@class="txt"]//a/text()')
for aa in title:
    titledict.append(aa)
links = zip(zuobiaolist,titledict)
items = []
for link in links:
    item = {}
    title = link[-1]
    print(title)
    price = link[0]
    print(price)
    item['title'] = title
    item['price'] = price
    items.append(item)
json.dump(items,open('rujia.json','w',encoding='utf-8'),ensure_ascii=False,indent=4)

'''
爬取思路:
1. 分析页面 ,价格没有  通过分析是用图片通过css来截取的价格位置,并需要我们使用 解码图片的手段进行读取价格数字.
2. 这样我们 首要的就是通过源码找到图片的地址,和它所对应的坐标位置,并解析图片上的数字, 用相对应的坐标作为索引拿取出我们需要的价格.
3. 分析页面属于,局部刷新 还是页面刷新  拿取并且构造每一页的地址.
4. 拿到字地址 循环拼接url  使用re或xpath或bs4去匹配.拿取出我们需要的数据.这里price和title  它们是不在同一个标签内  所以我们是分开去获取的,
    但是我们如果存为jSON 格式 或者入库  是需要它们一一对应, 所以使用了一个 内置函数zip()  将分别取出来的数据 去对应它们正确的名称和价格, 最后使用  JSON.dump  存入.
    ''''


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lonelypatients°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值