Python 电影评论爬行

Python 电影评论爬行,python,web-crawler,Python,Web Crawler,我想在这个页面中抓取所有这些电影评论。 我试着用这个代码爬行。(我用的是Jupiter笔记本-Anaconda3) 正如我在第三个街区和第四个街区写的那样,什么都没有保存。有什么问题吗?这会得到你想要的。在Jupyter笔记本中用python测试(最新版本) 预览 首先检查页面是否未使用JavaScript添加内容BeautifulSoup,urllib和request不运行JavaScript。您需要Selenium来控制可以运行JavaScript的真正web浏览器。或者您必须找到J

我想在这个页面中抓取所有这些电影评论。

我试着用这个代码爬行。(我用的是Jupiter笔记本-Anaconda3)





正如我在第三个街区和第四个街区写的那样,什么都没有保存。有什么问题吗?

这会得到你想要的。在Jupyter笔记本中用python测试(最新版本)

预览

首先检查页面是否未使用JavaScript添加内容
BeautifulSoup
urllib
request
不运行JavaScript。您需要
Selenium
来控制可以运行JavaScript的真正web浏览器。或者您必须找到JavaScript用于获取数据的url,并在代码中使用此url。列表作为
soup是空的。find\u all(…)
返回和空列表可能您应该使用
find\u all('li')
而不是
find\u all('li','p')
就像旁注一样,
find\u all('li','p'))
确实在寻找
  • import requests
    from bs4 import BeautifulSoup
    
    test_url = "https://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=174903&type=after&page=1"
    resp = requests.get(test_url)
    soup = BeautifulSoup(resp.content, 'html.parser')
    soup
    
    score_result = soup.find('div', {'class': 'score_result'})
    lis = score_result.findAll('li')
    lis[:3]
    
    from urllib.request import urljoin  #When I ran this block and next block it didn't save any reviews.
    review_text=[]
    #review_text = lis[0].find('p').getText()
    list_soup =soup.find_all('li', 'p')
    
    for item in list_soup:
    review_text.append(item.find('p').get_text())
    
    review_text[:5] #Nothing was saved.
    
    import requests
    from bs4 import BeautifulSoup
    from bs4.element import NavigableString
    
    test_url = "https://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=174903&type=after&page=1"
    resp = requests.get(test_url)
    
    soup = BeautifulSoup(resp.content, 'html.parser')
    movie_lst = soup.select_one('div.score_result')
    ul_movie_lst = movie_lst.ul
    for movie in ul_movie_lst:
        if isinstance(movie, NavigableString):
            continue
    
        score = movie.select_one('div.star_score em').text
        name = movie.select_one('div.score_reple p span').text
        review = movie.select_one('div.score_reple dl dt em a span').text
    
        print(score + "\t" + name)
        print("\t" + review)