python - 影评爬取
问题描述
我想在这个页面中抓取所有这些电影评论。 红圈的哪一部分
我试图用这段代码爬行。(我用的是Jupiter Notebook-Anaconda3)
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.
正如我在第三块和第四块中所写的那样,没有任何保存。问题是什么?
解决方案
这将得到你想要的。在 Jupyter Notebook 中的 python 中测试(最新)
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)
推荐阅读
- reactjs - 如何使用反应材料ui在js中使用css添加背景剪辑属性
- javascript - 在 jQuery 和 JS 中停止计时器
- python - 如何从运行 PySpark 内核的 EMR jupyter notebook 中的另一个 ipynb 文件导入?
- css - CSS网格 - 固定高度滚动容器防止内部背景占据全高
- python-3.x - 我们可以从 ~/.bash_profile 加载环境变量而无需获取 ~./bash_profile 吗?
- javascript - 使 HTML 页面在 5 分钟后隐藏所有内容,仅在 30 分钟后再次显示
- sql - 如何正确使用 pg_dump 将我的本地数据库复制到远程服务器
- php - Mysql:查询默认的订单和排名(固定/保留条目?)
- elasticsearch - 通过代理在企业防火墙后面的 Elasticsearch RestHighLevelClient
- javascript - MongoDB - 仅当嵌套数组中的所有条目存在时才更新它们