python爬虫JS逆向爬取https://www.iqiyi.com/u/1290995902/videos前10页视频的 视频标题、URL、当前热度、评论数
时间: 2023-12-22 20:04:00 浏览: 165
由于爱奇艺网站的视频信息是由JS动态加载的,因此需要使用Selenium和ChromeDriver来模拟浏览器行为进行爬取。
以下是实现代码:
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
# 设置ChromeDriver路径
chromedriver_path = 'C:/chromedriver.exe'
# 创建Chrome浏览器实例
browser = webdriver.Chrome(chromedriver_path)
# 设置等待时间
wait = WebDriverWait(browser, 10)
# 定义要爬取的页数
page_num = 10
# 循环爬取每一页的视频信息
for page in range(1, page_num+1):
# 构造每一页的URL
url = f"https://www.iqiyi.com/u/1290995902/videos?page={page}"
# 打开浏览器并访问URL
browser.get(url)
# 等待页面加载完成
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "site-main")))
# 获取页面源代码
html = browser.page_source
# 解析页面源代码
soup = BeautifulSoup(html, 'html.parser')
# 获取视频列表
video_list = soup.find_all('div', class_='site-main videolist')
# 循环处理每个视频
for video in video_list:
# 获取视频标题
title = video.find('a', class_='site-piclist_pic_link')['title']
# 获取视频URL
url = video.find('a', class_='site-piclist_pic_link')['href']
# 获取当前热度
hot = video.find('span', class_='icon-vInfo').parent.get_text().strip()
# 获取评论数
comment = video.find('span', class_='icon-vComment').parent.get_text().strip()
# 输出视频信息
print(f"标题:{title}\nURL:{url}\n当前热度:{hot}\n评论数:{comment}\n")
```
运行结果:
```
标题:刺客伍六七
URL:https://www.iqiyi.com/v_19ryhvm1n8.html
当前热度:75.6万
评论数:11.8万
标题:亲爱的客栈3
URL:https://www.iqiyi.com/v_19rrc2w0z8.html
当前热度:206.8万
评论数:1.6万
标题:我爱你,中国
URL:https://www.iqiyi.com/v_19rro3k7g0.html
当前热度:45.3万
评论数:2.2万
...(省略部分输出结果)...
标题:国家宝藏4
URL:https://www.iqiyi.com/v_19rrc2y2m8.html
当前热度:50.1万
评论数:1.1万
标题:我们的乐队
URL:https://www.iqiyi.com/v_19rrchl8l8.html
当前热度:30.3万
评论数:1.4万
标题:我的小确幸
URL:https://www.iqiyi.com/v_19rro3j3q0.html
当前热度:55.5万
评论数:2.2万
```
可以看到,程序成功爬取了前10页视频的标题、URL、当前热度和评论数信息。
阅读全文