我正在按照视频中的某些说明进行操作,但似乎遇到了麻烦。 在以下网站上运行脚本时,我试图访问托管每个游戏赔率的容器,以将thme导入单独的csv文件中。
import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
#my_url = 'https://www.google.com/search?q=premier+league&rlz=1C1GCEU_en-GBIN877FR877&oq=pre&aqs=chrome.0.69i59j69i57j35i39j69i65l2j69i60l3.628j0j7&sourceid=chrome&ie=UTF-8#sie=lg;/g/11fj6snmjm;2;/m/02_tc;mt;fp;1;;'
my_url = 'https://sports.coral.co.uk/sport/football/matches/tomorrow'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
container = page_soup.find_all("div",{"class":"oddsicard desktop-sport-card"})
print(len(container))
但是,由于所有字符都不可读,我遇到了无法选择容器的问题。我曾在其他页面上尝试过此方法,但似乎可以正常工作,因此我认为解码或网页本身有问题。
打印时,这是输出:
vn#���b��
��
�u��W��!�JE�O���;�����
��7�_�,p ��AGh��}���oP�.ܱy;o/��-�{A��rrsh|?[Z����
I�N��]����l�b՜��f6�='��.���R�NWex����&���Q�����m0��~�c�N���zA#/
如果有人可以帮助您,将不胜感激。
答案 0 :(得分:1)
此url发送使用brotli压缩的数据,当我尝试将标头'Accept-Encoding'
与其他压缩一起使用时,它不会以未压缩的方式发送数据。
您必须安装模块brotlipy并使用它解压缩内容
import brotli
page_html = brotli.decompress(page_html)
from urllib.request import urlopen as uReq
my_url = 'https://sports.coral.co.uk/sport/football/matches/tomorrow'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
print(uClient.headers['Content-Encoding']) # `br` means `brotli`
import brotli
page_html = brotli.decompress(page_html)
print(page_html)