生成上面回答的完整代码
时间: 2024-09-09 19:04:33 浏览: 48
由于完整的爬虫代码可能因为豆瓣网站的实时变化而有所不同,下面是一个基本框架的示例,假设我们能直接从HTML中找到标题(Title)和评分(Rating)。实际爬取时可能需要结合正则表达式或者更复杂的解析方法。这里我们将使用selenium处理动态加载的内容:
```python
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import pandas as pd
# 创建一个Chrome浏览器实例
driver = webdriver.Chrome()
url = 'https://movie.douban.com/top250'
def get_html_content(url):
driver.get(url)
time.sleep(3) # 等待页面加载完成
html = driver.page_source
return html
# 获取网页源码
html = get_html_content(url)
soup = BeautifulSoup(html, 'lxml')
data = []
# 模拟点击"更多"按钮来获取所有条目(假设存在)
for _ in range(2): # 实际需要查看豆瓣API是否允许,可能不止两页
more_button = driver.find_element_by_xpath('//button[text()="更多"]') # 更改XPath匹配元素
if more_button.is_displayed():
more_button.click()
time.sleep(2)
movies = soup.find_all('li', class_='item') # 可能需要根据当前页面结构更改选择器
for movie in movies:
title = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
# 将数据存储在字典中
data.append({'Title': title, 'Rating': rating})
driver.quit() # 关闭浏览器
# 将数据转换为DataFrame并写入Excel
df = pd.DataFrame(data)
df.to_excel('douban_top100_with_selenium.xlsx', index=False)
```
在这个例子中,你需要确保已安装了`selenium`库,并且系统中有对应的浏览器驱动(如ChromeDriver),并且要根据实际情况修改XPath或CSS选择器以匹配目标元素。
阅读全文