最近我开始学习网络抓取,我认为我会尝试使用请求和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
元素,而它们存在于网页的代码中。我在做什么错了?
答案 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并设法解析了网页。