python - 同时抓取两个页面:pandas 错误
问题描述
我想从这两个页面中保存电影评论和电影标题。
https://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=~
https://movie.naver.com/movie/bi/mi/basic.nhn?code=~
当我运行这段代码并打开 csv 文件时。
from bs4 import BeautifulSoup
from urllib.request import urlopen
from selenium import webdriver
from urllib.request import urljoin
import pandas as pd
import requests
#url_base = 'https://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=25917&type=after&page=1'
base_url = 'https://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=' #review page
base_url2 = 'https://movie.naver.com/movie/bi/mi/basic.nhn?code=' #movie title
pages =['177374','164102']
#print(soup.find_all('div', 'score_reple'))
#div = soup.find('h3', 'h_movie')
df = pd.DataFrame()
for n in pages:
# Create url
url = base_url + n
url2 = base_url2 + n
# Parse data using BS
print('Downloading page %s...' % url)
print('Downloading page %s...' % url2)
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
reple = soup.find_all('div', 'score_reple')
res2 = requests.get(url2)
soup = BeautifulSoup(res2.text, "html.parser")
title = soup.find('h3', 'h_movie')
#ratesc = soup.find('','')
#story=rname.getText()
#data = [title,reple]
data = {'title':[title], 'reviewn':[reple]}
df = df.append(pd.DataFrame(data), sort=True).reset_index(drop=True)
df.to_csv('./title.csv', sep=',', encoding='utf-8-sig')
如何修复此代码?
解决方案
您可以尝试清理它的一件事是首先转换为字符串,然后根据 html 放置约束,如下所示:
title = str(soup.find('h3', 'h_movie'))
start = '" title="'
end = ' , 2018">'
newTitle = title[title.find(start)+len(start):title.rfind(end)]
然后在评论部分尝试同样的事情。您将希望缩小结果集的范围,然后在审查部分所在的位置转换为字符串并对其进行限制。
然后,您将清理数据并准备添加到 DataFrame 中。
希望这可以帮助您走上正确的道路!
推荐阅读
- typescript - 反应打字稿:函数缺少返回类型
- php - 如果表单中的 anthing 为空,laravel 搜索不起作用
- algorithm - 模幂(python)- 内存溢出
- python - 涉及 if 语句和 break 语句的 While 循环有什么问题?
- php - 谷歌分析“请求的身份验证范围不足”;“状态”:“PERMISSION_DENIED”错误
- c++ - 如何在不导致段错误的情况下测试“dynamic_cast”的结果
- html - 卡组Bootstrap的对齐方式
- android - 单击 View Holder 时出现 ActivityNotFoundException 错误
- sql - 数组 CONCAT 代码点火器 3
- javascript - 如何在 window.location 中获取 `?` 之后的 url 部分