编写程序,创建一个Scrapy项目爬取网站豆瓣电影Top 250(https://movie.douban.com/top250)中的所有页面的电影名称、描述和评分,并存储到.csv文件中。编写软件为pycharm,浏览器为Edge
时间: 2024-06-09 09:06:04 浏览: 213
好的,以下是具体步骤:
1. 在PyCharm中创建一个新的Scrapy项目,命名为douban_movie。
2. 在命令行中使用以下命令安装Selenium和Edge驱动程序:
```
pip install selenium
```
3. 在项目的settings.py文件中,将ROBOTSTXT_OBEY设置为False,以便我们可以爬取所有页面:
```
ROBOTSTXT_OBEY = False
```
4. 在项目的spiders文件夹中创建一个新的Spider,命名为douban_spider.py。在该文件中,我们需要导入Selenium和Scrapy的相关模块:
```python
from scrapy import Spider
from selenium import webdriver
from scrapy.selector import Selector
from scrapy.http import Request
from time import sleep
```
5. 在Spider类中,我们需要定义start_requests()函数来启动我们的爬虫。在该函数中,我们使用Selenium打开Edge浏览器,然后使用while循环来爬取每一页:
```python
class DoubanSpider(Spider):
name = 'douban_spider'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250']
def start_requests(self):
self.driver = webdriver.Edge()
self.driver.get(self.start_urls[0])
while True:
sel = Selector(text=self.driver.page_source)
movies = sel.xpath('//div[@class="info"]')
for movie in movies:
title = movie.xpath('div[@class="hd"]/a/span/text()').extract_first()
description = movie.xpath('div[@class="bd"]/p/text()').extract_first().strip()
rating = movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first()
yield {'Title': title, 'Description': description, 'Rating': rating}
next_page = self.driver.find_element_by_xpath('//span[@class="next"]/a')
if not next_page:
break
sleep(3)
next_page.click()
```
在while循环中,我们首先使用Scrapy的Selector模块从当前页面中选择所有电影。然后,我们使用XPath表达式从每个电影中提取标题、描述和评分。最后,我们使用yield关键字将这些数据发送给Scrapy的pipeline进行处理。
在循环的末尾,我们使用Selenium的find_element_by_xpath()函数查找下一页的链接。如果没有找到下一页,我们会退出循环。否则,我们使用click()函数单击下一页的链接,并让程序休眠3秒钟,以等待新页面加载。
6. 最后,我们可以在settings.py文件中添加以下配置,将数据保存到.csv文件中:
```python
FEED_FORMAT = 'csv'
FEED_URI = 'douban_movies.csv'
```
这将使Scrapy将所有数据保存到名为douban_movies.csv的文件中。
7. 运行我们的爬虫,我们只需要在命令行中输入以下命令:
```
scrapy crawl douban_spider
```
这将启动我们的爬虫并开始爬取所有页面。在爬取完成后,我们可以在项目的根目录中找到douban_movies.csv文件,其中包含所有电影的名称、描述和评分。
阅读全文