无法使用请求从网站获取一些号码

三菱:

我正在尝试使用请求从网页中获取一些数字。图像中有可用的数字。到目前为止,我编写的脚本可以show像使用PIL一样显示数字,但不能打印它们。

网站地址

提交按钮上方的可见数字如下:

在此处输入图片说明

到目前为止,我已经尝试过:

import io
import requests
from PIL import Image
from bs4 import BeautifulSoup
from urllib.parse import urljoin

base = 'http://horoscope.horoscopezen.com/'
url = 'http://horoscope.horoscopezen.com/archive2.asp?day=2&month=1&year=2022&sign=1#.Xy07M4oza1v'

def get_numbers(link):
    r = requests.get(link)
    soup = BeautifulSoup(r.text,"lxml")
    image_links = [urljoin(base,td['src']) for td in soup.select("td > img[src^='secimage.asp?']")]
    for image_link in image_links:
        r = requests.get(image_link)
        img = Image.open(io.BytesIO(r.content))
        img.show()
        break

if __name__ == '__main__':
    get_numbers(url)

我如何从该站点获取号码?

墨粉

您无需在此处使用OCR。图像本身由每个数字的单独图像组成,并且通过解析图像链接,您可以获得完整的数字。图像链接的格式如下:http://horoscope.horoscopezen.com/secimage.asp?I=1&N=595A5C585A5C看来I=参数是数字的索引,而N=参数是整数。翻译似乎如下:

56 -> 9
57 -> 8
58 -> 7
59 -> 6
5A -> 5
5B -> 4
5C -> 3
5D -> 2
5E -> 1
5F -> 0

请注意,这些数字采用十六进制编码(所有字符均为0-9,AF)。由于0x56对应于9,而0x5F对应于0(并且0x56 + 9 == 0x5F),因此我们可以使用公式获得数字9 - hex_num + 0x56例如,将56转换为9 - 0x56 + 0x56 = 9,将5E转换为9 - 0x5E + 0x56 = 9 - 8 = 1

因此,您可以使用以下方式更改代码以打印出完整的数字:

def url_to_number(url):
    all_digits = []
    # We want the encoded number, find '&N=' and get the characters after it
    N = url[url.find('&N=') + 3:]
    # loop the characters in pairs
    for i in range(0, len(N), 2):
        digit = 9 - int(N[i:i+2], 16) + 0x56
        all_digits.append(digit)
    return all_digits

该行digit = 9 - int(N[i:i+2], 16) + 0x56完成了我前面提到的转换。int(N[i:i+2], 16)将数字从字符串转换为整数(以16为基数(十六进制))。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用请求从网站获取一些号码

无法使用请求从网站获取一些号码

使用Maven只是获取一些库jar

尝试使用ElasticSearch存储和获取一些数据

无法使用JQuery AJAX获取请求下载Pdf / Excel,并随get请求发送一些数据

使用Jfilechooser,获取一些时髦的文件名

无法使用SQL删除一些表数据

无法从网站上抓取一些“ div”标签

无法使用xhr从网页中获取一些信息

为什么使用dataSnapshot时无法从Firebase获取一些数据

如何使用硒从网站上抓取一些链接

如何从需要使用Ansbile进行身份验证的网站上获取一些数据?

一些网站如何避免响应从node.js内部发出的https请求?

无法获取一些文字。蟒蛇。硒

除了Stackexchange,Google和其他一些网站,无法打开其他任何网站

mysql-使用联接获取一些信息

如何从请求中获取一些表格?

Selenium无法在网页上获取一些数据

scrapy无法从网站提取一些数据

PHP使用addVariable方法向我发送一些变量,但我无法在as3上获取该变量

使用JSoup获取一些属性

使用xpath获取文章文本,但省略一些标签

16.04 无法获取一些档案

无法使用 Jsoup 找到一些 html 元素

如何将一些数据输入网站并从 html 表中获取输出?

使用来自网站的 BeautifulSoup 仅获取一些标签 <p>

如何从网站获取一些属性进行抓取

firebase 使用 where 获取一些数据

无论如何我们可以使用来自 rfid 的数据从另一个网站获取一些东西吗?