No module named bs4怎么解决import requestsfrom bs4 import BeautifulSoupfrom selenium import webdriverfrom seleniumwebdrivercommonby import Byfrom seleniumwebdrivercommonkeys import Keysfrom seleniumwebdri
- 优化网络爬虫代码:
import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
def get_comments(soup): comments = soup.select('.comment-item') for comment in comments: name = comment.select('.comment-info > a')[0].text.strip() time = comment.select('.comment-info > span')[0].text.strip() content = comment.select('.short')[0].text.strip() print(name, time, content)
def crawl(url): # 创建浏览器对象 browser = webdriver.Chrome()
# 访问url地址
browser.get(url)
# 设置浏览器窗口最大化
browser.maximize_window()
# 设置请求头部信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Cookie': '你的Cookie',
'Referer': url
}
# 发送请求获取页面内容
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
# 解析页面内容获取影评数据
get_comments(soup)
# 循环爬取所有页的影评数据
while True:
try:
# 查找“下一页”按钮元素,若找到则点击,否则退出循环
next_button = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '.comment .next a'))
)
next_button.click()
# 等待页面加载完成
WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '.comment-item'))
)
# 获取页面内容
soup = BeautifulSoup(browser.page_source, 'html.parser')
# 解析页面内容获取影评数据
get_comments(soup)
except:
break
# 关闭浏览器
browser.close()
if name == 'main': # 初始页面url确定 start_url = 'https://movie.douban.com/subject/25868125/'
# 页面翻页规律设置
for i in range(10):
url = start_url + 'comments?start=' + str(i*20) + '&limit=20&status=P&sort=new_score'
crawl(url)
- 添加遍历页面循环:
if name == 'main': # 初始页面url确定 start_url = 'https://movie.douban.com/subject/25868125/'
# 页面翻页规律设置
for i in range(10):
url = start_url + 'comments?start=' + str(i*20) + '&limit=20&status=P&sort=new_score'
crawl(url)
其中,range(10)表示遍历10页。如果想要遍历更多的页数,可以修改range()函数的参数。
- 初始页面url确定:
start_url = 'https://movie.douban.com/subject/25868125/'
其中,25868125为电影《寻梦环游记》的豆瓣id,可以根据需要修改为其他电影的豆瓣id。
- 页面翻页规律设置:
url = start_url + 'comments?start=' + str(i*20) + '&limit=20&status=P&sort=new_score'
其中,start表示影评的起始位置,limit表示每页显示的影评数量,status表示影评的状态(P表示全部影评,F表示精选影评),sort表示影评的排序方式(new_score表示按照评分从高到低排序,time表示按照时间从新到旧排序)。可以根据需要修改这些参数,以获取不同的影评信息
原文地址: http://www.cveoy.top/t/topic/g7kj 著作权归作者所有。请勿转载和采集!