python - 网站不允许网络抓取 - 如何解决?
问题描述
但是,当我运行时:
from bs4 import BeautifulSoup
from requests import get
url = "https://likms.assembly.go.kr/law/lawsLawtInqyDetl1010.do?genActiontypeCd=2ACT1010&genDoctreattypeCd=DOCT2041&procWorkId=&workstepId=&repFlowId=&flowId=&workId=&workSno=&nextWinWd=%27&nextWinHg=%27%27&nextWinTypeAttr=%27&nextMappingId=&nextGenActiontypeCd=&viewGb=PROM&contSid=0008&contId=1983123000000002&cachePreid=ALL&genMenuId=menu_serv_nlaw_lawt_1030&back_viewGb=PROM&back_contSid=0008&back_contId=1983123000000002&back_cachePreid=ALL"
BeautifulSoup(get(url).text, 'html.parser').find("div", {"class:", "article"})
而不是被刮掉的内容,我得到:
<div class="article">
<div class="loading">
<p>로딩중 입니다.</p>
<span style="font-weight: bold;">법령정보에 대한 법적효력은 관보에 있습니다.</span><br/>
<span style="font-weight: bold;">인터넷 법령정보는 참고자료로 활용하시기 바랍니다.</span>
</div>
</div>
文本中的内容类似于“加载中......此信息的合法权利由 XXX 持有”等。
这是否意味着我将无法抓取该网站,或者有什么办法可以解决这个问题?
解决方案
使用将执行 JavaScript 并呈现页面(无窗口)的无头浏览器。BeautifulSoup 只会解析服务器返回的初始 HTML,它不会执行任何 JavaScript。
推荐阅读
- python - 按日期拉伸数据框
- ios - Xcode 11.3 没有最新的 iOS 版本
- node.js - 添加 SSL 证书后无法访问传递给 REST api 的查询参数
- memory - 关于使用 Fortran 的 MPI 的问题:如何将数据广播到共享内存?
- sql - 如何使用文本框的值填充 MS Access 查询
- matlab - 将盲文翻译成matlab(过滤后)
- python - 正则表达式用另一个文件中的变量替换小胡子
- javascript - 如何使用反应函数(不是类)加载和显示图像?
- reactjs - 使用 React Context 时如何更新状态?
- unit-testing - 如何测试从构造函数调用然后调用其他异步函数的 init() 函数