我试图分析网站,但我不能得到有关网页的全部信息。更准确地说,我必须拥有<fgis-root>
和</fgis-root>
之间的所有信息,但是没有任何信息。我该怎么修?你知道吗
from bs4 import BeautifulSoup
import urllib3
http = urllib3.PoolManager()
url = 'https://pub.fsa.gov.ru/ral/view/8/applicant'
response = http.request('GET', url)
soup = BeautifulSoup(response.data)
print(soup)
您遇到的问题是web抓取中的常见问题。你知道吗
位于
https://pub.fsa.gov.ru/ral/view/8/applicant
的网页在https://pub.fsa.gov.ru/main.73d6a501bd7bda31d5ec.js加载javascript文件,该文件负责动态内容加载。你知道吗问题的根源在于urllib3、请求或python中的任何其他http客户机不会在该网页中呈现javascript。因此,您只有服务器提供给您的初始响应,在许多情况下,这些响应并不包含您需要的信息。你知道吗
解决方法是使用selenium。它将允许您与浏览器交互,例如chrome或firefox以编程方式,这些浏览器实际呈现结果。你知道吗
你没有具体的信息,你正试图刮下这个网站,我的建议是使用显式等待,直到元素,你希望找到是在DOM中。您可以在seleniumhere中找到有关等待的更多信息。你知道吗
用法示例
您应该修改这段代码来刮取您想要刮取的数据。你知道吗
您可以模拟GET请求。此信息来自加载页面时在dev tools,F12的网络选项卡中观察到的网络流量。授权和会话id可能有时间限制。您可以使用Session来处理cookies部分,方法是在同一个Session中首先对前一个url发出请求。你知道吗
由于您要查找的内容是从javascript生成的,因此需要模拟浏览器。您可以使用^{} 执行以下操作:
还可以检查here所有^{} 提供的用于在页面中定位元素的可用方法。你知道吗
相关问题 更多 >
编程相关推荐