【发布时间】:2021-10-08 12:22:07
【问题描述】:
它在页面的最左上角有两个按钮<이전글(上一项)和다음글(下一项)。上面的 url 显示了第一个项目,因此单击 <이전글(previous item) 只会刷新同一页面。
我正在尝试抓取每个页面右侧框中的内容,直到到达最后一项(即,直到单击 다음글(下一项)只会刷新同一页面)。
通过检查页面,如果该项目是最后一个项目,那么按钮 다음글(下一个项目)的 a[href] 就是 "#//,而对于所有之前的项目,它们的 a[href]s按钮다음글(下一项)是下一项的网址。
我的代码如下(使用递归),但是从 print 语句中打印出来的 url 往往会随着时间的推移而重复(它们被打印两次或更多次)。
如果我不包含 time.sleep(4),我会在相同的 url 打印近 10 次后立即收到错误。
我错过了什么吗?
from bs4 import BeautifulSoup
from selenium import webdriver
import sys
import re
from tqdm import tqdm
import time
sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36")
wd = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
start_url = "https://glaw.scourt.go.kr/wsjo/panre/sjo100.do?contId=3225630&q=*&nq=&w=panre§ion=panre_tot&subw=&subsection=&subId=1&csq=&groups=6,7,5,9&category=&outmax=1&msort=&onlycount=&sp=&d1=20000101~20201231&d2=&d3=&d4=&d5=&pg=1&p1=&p2=&p3=&p4=&p5=&p6=&p7=01&p8=&p9=&p10=&p11=&p12=&sysCd=WSJO&tabGbnCd=&saNo=&joNo=&lawNm=&hanjaYn=N&userSrchHistNo=&poption=&srch=&range=&daewbyn=N&smpryn=N&idgJyul=01&newsimyn=Y&trtyNm=&tabId=&save=Y&bubNm="
content_l = []
def scrape(webdriver, url, l):
time.sleep(4)
wd.get(url)
html = wd.page_source
soup = BeautifulSoup(html)
for i in soup.find("div", {"class:", "con_area_02"}).find_all(["h2","p"]):
l.append(i.text)
next_btn = wd.find_element_by_css_selector('a[title="다음글"]')
if str(next_btn.get_attribute("href")) != "#//":
next_btn = wd.find_element_by_css_selector('a[title="다음글"]')
print(str(next_btn.get_attribute("href")))
#next_btn.click()
time.sleep(1)
return scrape(webdriver, str(next_btn.get_attribute("href")), l)
elif str(next_btn.get_attribute("href")) == "#//":
return l
scrape(wd, start_url, content_l)
【问题讨论】:
标签: python selenium-webdriver web-scraping beautifulsoup