使用硒单击链接的网络爬网问题

时间:2019-02-19 11:36:07

标签: python selenium web hyperlink web-crawler

我想使用硒进入我签名的URL,然后单击列表上的第一个链接并获取文本数据。

대법원[대법원2018.11。1.,선고,2016도10912,전원합의체]

这是该网页上链接的html代码 我已经尝试了几乎可以在网上找到的每种方法。 该网页是否可能受到某种保护?

from selenium import webdriver
from bs4 import BeautifulSoup
# selenium webdriver chrome


driver = webdriver.Chrome("chromedriver.exe")

# "get url
driver.get("http://law.go.kr/precSc.do?tabMenuId=tab103&query=")


elem = driver.find_elements_by_css_selector("""#viewHeightDiv > table > 
tbody > tr:nth-child(1) > td.s_tit > a""")
if len(elem):
    elem.click()

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
notices = soup.find('div', id='bodyContent')

for n in notices:
    print(n)

因此,从我的代码中,硒打开并转到url,它没有单击我想要的内容。所以我得到的打印数据不是我想要的。

我想知道如何进行网络抓取http://law.go.kr/precSc.do?tabMenuId=tab103&query=

也许有一种不使用硒的方法? 我选择硒,因为此网站的网址不固定。固定的最后一个网址是http://law.go.kr/precSc.do?tabMenuId=tab103&query=

1 个答案:

答案 0 :(得分:1)

这里的代码带有必要的等待,以单击链接并获取文本:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

driver.get("http://law.go.kr/precSc.do?tabMenuId=tab103&query=")

#Wait for visibility of the first link in viewHeightDiv. Necessary to get text.
elem = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#viewHeightDiv a")))
#Get first word of the link. Will be you used to check if page loaded by checking title of the text.
title = elem.text.strip().split(" ")[0]

elem.click()
#Wait for h2 to have title we get before.
wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "#viewwrapCenter h2"), title))

content = driver.find_element_by_css_selector("#viewwrapCenter").text
print(content)