为什么当我点击网站,看到网站的源代码,它给了我一个有组织的结果。你知道吗
我想要的只是日期,队伍和分数。你知道吗
这是我的Python代码:
import requests, bs4
from bs4 import BeautifulSoup
r=requests.get("https://www.scoreboard.com/mls/results/")
soup=bs4.BeautifulSoup(r.content,"lxml")
print(soup.prettify())
这是我搜索“洛杉矶”的结果。我的代码返回:
但是当我打开网站的源代码:https://www.scoreboard.com/mls/results/ 它告诉我:
我不知道为什么Python的结果完全不同。你知道吗
这个站点使用自己的feed语法,似乎它们使用~作为行分隔符,–作为对象分隔符,÷作为键/值。因此,以下是:
变成json格式(json对象在这里表示一行):
如果您查看https://www.scoreboard.com/x/js/core_500_1495000000.js它包含缩小的代码,只需在这里将
eval
替换为console.log
,即可打印整个代码并查找关键字名称,如ZEE、ZA、ZD等。。。你会得出这样的结论:对于锦标赛描述,以下行描述了表中的所有项目,例如一行:
请注意,此格式中可以存在多个相同的键(在本例中与json没有严格的类比)
此代码将向url发出http请求,webserver将返回网站源代码代码。如果在Chrome中单击
CTRL + U
,源代码将与python抓取的结果相同。你知道吗您要求的不同结果是,数据将在网站加载后加载,它将由webiste的javascript加载。换句话说,您需要的数据是由Ajax加载的。你知道吗
你可以打开Chrome->;
F12
->;Network
->;XHR
->;刷新你想要浏览的网站。你知道吗注意Chrome的日志。通常可以通过这种方式获得Ajax数据。有时你应该转换格式。你知道吗
像您的网站一样,我找到两个地址来获取Ajax数据:
https://www.scoreboard.com/x/feed/mc_8
https://d.scoreboard.com/x/feed/tr_1_200_CQv5qrFt_155_1_8_en-usa_1
但是您需要做一些事情,比如根据相应的js代码转换格式。你知道吗
相关问题 更多 >
编程相关推荐