Python request.get()返回损坏的源代码,而不是预期的源代码?

时间:2018-09-20 16:23:15

标签: python python-3.x python-requests

在上述Wikipedia页面上提出请求。具体来说,我需要从https://en.wikipedia.org/wiki/2017%E2%80%9318_La_Liga#Results

中抓取“结果矩阵”
selectedSeasonPage = requests.get('https://en.wikipedia.org/wiki/2017–18_La_Liga', features='html5lib')

pprint.pprint(selectedSeasonPage.text)并跳到矩阵的源代码,可以看出它是不完整的。

requests.get()返回的HTML片段:

<table class="wikitable plainrowheaders" style="text-align:center;font-size:100%;">
.
.
<th scope="row" style="text-align:right;"><a href="/wiki/Deportivo_Alav%C3%A9s" title="Deportivo Alavés">Alavés</a></th>
<td style="font-weight: normal;background-color:transparent;">— </td>
<td style="white-space:nowrap;font-weight: normal;background-color:transparent;"></td>
<td style="white-space:nowrap;font-weight: normal;background-color:transparent;"></td>
<td style="white-space:nowrap;font-weight: normal;background-color:transparent;"></td>
<td style="white-space:nowrap;font-weight: normal;background-color:transparent;"></td>
<td style="white-space:nowrap;font-weight: normal;background-color:transparent;"></td>
<td style="white-space:nowrap;font-weight: normal;background-color:#BBF3FF;">2–1</td>

通过浏览器查看的request.get()返回的HTML,并且预期效果不完整。 Can check this image for reference.

来自视图源的片段和所需的输出。

<table class="wikitable plainrowheaders" style="text-align:center;font-size:100%;">
.
.
<a href="/wiki/Deportivo_Alav%C3%A9s" title="Deportivo Alavés">Alavés</a></th>
<td style="font-weight: normal;background-color:transparent;">&#8212;</td>
<td style="white-space:nowrap;font-weight: normal;background-color:#BBF3FF;">3–1</td>
<td style="white-space:nowrap;font-weight: normal;background-color:#FFBBBB;">0–1</td>
<td style="white-space:nowrap;font-weight: normal;background-color:#FFBBBB;">0–2</td>
<td style="white-space:nowrap;font-weight: normal;background-color:#BBF3FF;">2–1</td>
<td style="white-space:nowrap;font-weight: normal;background-color:#BBF3FF;">1–0</td>
<td style="white-space:nowrap;font-weight: normal;background-color:#FFBBBB;">1–2</td>

发布示例HTML供参考,因为无法发布整个输出。可以根据需要张贴更多特定部分。

我的问题是如何在不导致值损失的情况下获取整个矩阵源?

根据我对先前问题的理解,如果页面的某些部分由JavaScript呈现,则requests无法返回预期的输出。但是此页面似乎是简单的HTML和CSS(至少是必需的部分)。无法使用Selenium需要刮多个页面。感谢使用requests或类似的解决方案。

请求版本为2.19.1。 Python版本是3.7.0。

缺少什么吗?我是新手,不胜感激。

1 个答案:

答案 0 :(得分:1)

在get调用中几乎没有“ features”参数的确切代码:

import requests
selectedSeasonPage = requests.get('https://en.wikipedia.org/wiki/2017–18_La_Liga')
print(selectedSeasonPage.text)

给我:

<th scope="row" style="text-align:right;"><a href="/wiki/Deportivo_Alav%C3%A9s" title="Deportivo Alavés">Alavés</a>
</th>
<td style="font-weight:normal;background:transparent;">&#8212;</td>
<td style="white-space:nowrap;font-weight:normal;background:#BBF3FF;">3–1</td>
<td style="white-space:nowrap;font-weight:normal;background:#FBB;">0–1</td>
<td style="white-space:nowrap;font-weight:normal;background:#FBB;">0–2</td>
<td style="white-space:nowrap;font-weight:normal;background:#BBF3FF;">2–1</td>
<td style="white-space:nowrap;font-weight:normal;background:#BBF3FF;">1–0</td>
<td style="white-space:nowrap;font-weight:normal;background:#FBB;">1–2</td>