python爬虫js逆向实例
时间: 2023-08-23 07:12:25 浏览: 258
当涉及爬取使用了JavaScript的网站时,常见的方法是使用selenium库来模拟浏览器行为。下面是一个Python爬取JavaScript网页的简单示例:
```python
from selenium import webdriver
# 创建一个浏览器对象
driver = webdriver.Chrome()
# 打开目标网页
driver.get("https://example.com")
# 执行JavaScript代码
result = driver.execute_script("return document.documentElement.innerHTML")
# 关闭浏览器
driver.quit()
# 输出爬取到的网页内容
print(result)
```
在这个示例中,我们使用了selenium库的Chrome驱动来模拟浏览器行为。首先,我们创建了一个浏览器对象,并通过`get()`方法打开目标网页。然后,使用`execute_script()`方法执行JavaScript代码,这里我们返回了整个HTML文档的内容。最后,我们关闭了浏览器并输出爬取到的网页内容。
需要注意的是,使用selenium库进行爬虫需要安装对应的浏览器驱动。上面示例中使用的是Chrome驱动,你可以根据自己的需求选择其他浏览器的驱动。
此外,还有其他一些工具和技术可以帮助你进行JavaScript逆向,比如使用开发者工具分析网页的网络请求、破解加密算法等。具体的实现方法和技巧会根据具体的网站和需求而不同,需要根据实际情况来进行调整和探索。
相关问题
python爬虫JS逆向爬取https://www.iqiyi.com/u/1290995902/videos前10页视频的 视频标题、URL、当前热度、评论数
由于爱奇艺网站的视频信息是由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、当前热度和评论数信息。
阅读全文