инструмент:
Селен
окружающая среда
есть пять списков комментариев под одним и тем же URL (SPA), который загружается динамически при нажатии кнопки
веб-сайт https://www.icourse163.org/course/PKU-1205962805 при необходимости, но на китайском.
ошибка:
ожидаемое значение
page1:
<page1 comment list>
page2:
<page2 comment list>
page3:
<page3 comment list>
page4:
<page4 comment list>
page5:
<page5 comment list>
что я получаю
page1:
<page2 comment list>
page2:
<page3 comment list>
page3:
<page3 comment list>
page4:
<page4 comment list>
page5:
<page5 comment list>
код
import requests
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver.chrome.options import Options
'''
API:
dict get_comment(url:string)
return dict of all comments:string
'''
def get_comment(url):
'''
div.ux-mooc-comment-course-comment_comment-list_item div.ux-mooc-comment-course-comment_comment-list_item_body_content
'''
driver = WebDriver()
driver.get(url)
driver.find_element_by_id("review-tag-button").click()
# 1,2,3,..button
comment_page_btns = driver.find_elements_by_class_name("th-bk-main-gh")
page = 1
file = open("comment.txt","w")
for btn in comment_page_btns:
btn.click()
soup = BeautifulSoup(driver.page_source,"lxml")
#comment list for one subpage
comment_tag_list = soup.select("div.ux-mooc-comment-course-comment_comment-list_item div.ux-mooc-comment-course-comment_comment-list_item_body_content")
comment_count = len(comment_tag_list)
print("in:",page," comment count: ", comment_count)
index = "page"+str(page)+"\n"
file.write(index)
for tag in comment_tag_list:
text = tag.get_text().rstrip().lstrip()+"\n"
file.write(text.encode("utf-8"))
page = page+1
file.close()
driver.quit()
if __name__ == "__main__":
get_comment("https://www.icourse163.org/course/PKU-1205962805")