为什么缺少响应对象的某些元素?请求模块

时间:2018-07-29 20:35:32

标签: python parsing beautifulsoup python-requests html-parsing

最近我开始学习网络抓取,我认为我会尝试使用请求和bs4模块从此site解析HTML表。

我知道我需要从td class访问tbody,这至少是looks网页的样子。

但是,当我尝试时,它似乎无法正常工作,因为它只能从td class捕获thead,而不能从tbody捕获。因此,除了表头之外,我什么也不能捕获。

我认为它与requests模块有关。

url = 'https://vstup.edbo.gov.ua/statistics/requests-by-university/? 
qualification=1&education-base=40'
r = requests.get(url)
print(r.text)

结果如下(粘贴表相关部分):

<table id="stats">
    <caption></caption>
    <thead>
    <tr>
        <td class="region">Регіон</td>
        <td class="university">Назва закладу</td>
        <td class="speciality">Спеціальність (спеціалізація)</td>
        <td class="average-ball number" title="Середній конкурсний бал">СКБ</td>
        <td class="requests-total number">Усього заяв</td>
        <td class="requests-budget number">Заяв на бюджет</td>
            </tr>
    </thead>
    <tbody></tbody>
</table>

因此,我的响应对象中缺少tbody元素,而它们存在于网页的代码中。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

@Holdenweb建议尝试使用Selenium,一切正常。

from selenium import webdriver 
from bs4 import BeautifulSoup

url = 'https://vstup.edbo.gov.ua/statistics/requests-by-university/? 
qualification=1&education-base=40'
browser = webdriver.Firefox(executable_path=r'D:/folder/geckodriver.exe')
browser.get(url)
html = browser.page_source

之后,我使用BeautifulSoup并设法解析了网页。