可以从网页抓取图片,将其转化为数字并保存到文件中吗?

0 投票
3 回答
823 浏览
提问于 2025-04-18 13:00

我知道这几乎是不可能的(如果我确定100%不可能,我就不会问这个问题了)

我想获取所有的黎巴嫩彩票号码,我找到的唯一网站是这个这个这个。我联系了这些网站,问他们能不能提供一个Excel或CSV文件,一个没有回复,一个说你看到的就是全部,他们不提供文件,第三个给了我一个ods文件,但里面有很多缺失的结果和错误的结果。

我只是想要这些结果用于个人项目,既然网站管理员不帮我,我要么得黑进他们的数据库(如果我是匿名用户,这应该比较简单),要么就得抓取图片,把它们转换成数字,然后保存到CSV文件里或者其他格式。

如果只是文本,我可以用beautifulsoup来处理,但抓取图片、把它们转换成数字并存储为CSV文件的行,这可能吗?

我最喜欢的编程语言是Python,但只要能完成这个任务,我接受任何语言。

3 个回答

1

首先,我建议你看看 HtmlAgilityPack,这个工具可以帮助你抓取网页上的图片。这里有一个 使用示例。之后,你可以使用 python-tesseract 这个工具,它是 tesseract-ocr(一个用C++写的库)的一个封装,用来进行光学字符识别。

1

这完全是可以做到的。在Python中,你可以使用scikit库(http://scikit-image.org/);通过这个库,你可以“读取”一张图片,并把它保存成一个数字矩阵。为了这个目的,最好把图片保存为“黑白”格式,这样你就会得到一个单一的矩阵,每个数字对应一个像素,数值范围从0到255,表示灰度。通过这个矩阵,你可以识别出数字的模式,并把它们保存为文本。虽然这工作量很大,但绝对是可以实现的。

Matlab也可以很容易地“读取”图片,并把它们转换成矩阵。

2
import requests
import lxml, lxml.html

r = requests.get('http://www.lldj.com/pastresult.php')

html = lxml.html.fromstring(r.text)

imgs =  html.cssselect('img')

for x in imgs:
    src = x.attrib['src']
    if src.startswith('images/Balls'):
        print src[-6:-4]

结果(2014年10月7日的抽奖结果1212):

04
19
30
32
38
42
34

对于其他页面,网址中有抽奖号码(1154),这样你就可以获取任何抽奖的结果。

import requests
import lxml, lxml.html

r = requests.get('http://www.lebanon-lotto.com/lebanese-loto-results/draw-number/1154.php')

html = lxml.html.fromstring(r.text)

imgs =  html.cssselect('img')

for x in imgs:
    src = x.attrib['src']
    #print src
    if 'lotto_balls_gray' in src:
        print src[-6:-4]

结果:

01
03
12
14
16
32
30

撰写回答