用scrapy框架爬取豆瓣即将上映电影
时间: 2023-10-01 21:11:08 浏览: 130
好的,以下是使用Scrapy框架爬取豆瓣即将上映电影的步骤:
1. 创建Scrapy项目
在命令行中执行以下命令:
```
scrapy startproject douban_movie
```
2. 创建Spider
在命令行中执行以下命令:
```
scrapy genspider movie_spider movie.douban.com
```
这里我们以`movie_spider`为Spider名称,以豆瓣电影即将上映页面(https://movie.douban.com/cinema/later/)为起始URL。
3. 编写Spider代码
打开`douban_movie/spiders/movie_spider.py`文件,修改`start_urls`和`parse`方法如下:
```python
import scrapy
class MovieSpider(scrapy.Spider):
name = 'movie_spider'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/cinema/later/']
def parse(self, response):
for movie in response.css('.intro'):
yield {
'title': movie.css('.title a::text').get(),
'date': movie.css('.date::text').get(),
'link': movie.css('.title a::attr(href)').get(),
}
```
解释一下代码:
- `allowed_domains`属性指定了Spider可以爬取的域名;
- `start_urls`属性指定了Spider的起始URL;
- `parse`方法是Scrapy处理响应的默认方法,它接收响应作为参数,并返回一个可迭代的对象;
- `response.css('.intro')`表示获取响应中所有class为`intro`的元素;
- `movie.css('.title a::text').get()`表示获取`movie`元素内class为`title`的`a`标签的文本;
- `movie.css('.date::text').get()`表示获取`movie`元素内class为`date`的文本;
- `movie.css('.title a::attr(href)').get()`表示获取`movie`元素内class为`title`的`a`标签的`href`属性值。
4. 运行Spider
在命令行中执行以下命令:
```
scrapy crawl movie_spider -o movies.json
```
这里使用了`-o`参数将爬取结果保存为JSON格式,保存在当前目录下的`movies.json`文件中。
5. 查看结果
打开`movies.json`文件,可以看到爬取到的豆瓣即将上映电影信息。
阅读全文