Web抓取:抓取表中的URL



我正在尝试抓取下面的网站:(请注意,它是韩语的(https://law.go.kr/lsSc.do?menuId=1&subMenuId=15&tabMenuId=81&query=

我需要抓取列中每个链接的所有内容법령명'它就在索引列旁边(请参阅下面的图片以供参考(,但链接似乎不是唯一的。他们似乎都有的urlhttps://law.go.kr/lsSc.do?menuId=1&subMenuId=15&tabMenuId=81&query=#未定义,但url似乎也不适用于创建汤。

我想知道这里可能有什么问题,或者刮这些东西可能根本不可能。

网站_筛选点

部件需求刮取

数据是用Javascript加载的,所以BeautifulSoup看不到它。但是,您可以用requests模块模拟Ajax请求。例如:

import re
import requests
from bs4 import BeautifulSoup
url = "https://law.go.kr/lsSc.do?menuId=1&subMenuId=15&tabMenuId=81&query="
menu_url = "https://law.go.kr/lsScListR.do?" + url.split("?")[-1]
content_url = "https://law.go.kr/lsInfoR.do"
data = {
"q": "*",
"outmax": "50",
"p18": "0",
"p19": "1,3",
"pg": "1",
"fsort": "10,41,21,31",
"lsType": "null",
"section": "lawNm",
"lsiSeq": "0",
"p9": "2,4",
}
soup = BeautifulSoup(requests.post(menu_url, data=data).content, "html.parser")
for a in soup.select(".left_list_bx a[onclick]"):
if "lsViewWideAll" not in a["onclick"]:
continue
lsiSeq, efYd, *_ = re.findall(r"d+", a["onclick"])
data = {
"lsiSeq": lsiSeq,
"efYd": efYd,
"chrClsCd": "010202",
"vSct": "*",
"efGubun": "Y",
"ancYnChk": "0",
}
s = BeautifulSoup(
requests.post(content_url, data=data).content, "html.parser"
)
print(s.get_text(strip=True, separator="n"))
print("-" * 80)

打印:

판례
연혁
위임행정규칙
규제
생활법령
10ㆍ27법난 피해자의 명예회복 등에 관한 법률
...and so on.

似乎,网站在这些行上使用了onClick方法。因此,解决这一问题的唯一方法是使用Selenium,因为请求和漂亮的汤无法评估javascript函数。

最新更新