随机选择一个网站使用Scrapy框架进行爬取数据 ,并对爬取的数据进行简单的数据分析
时间: 2024-06-08 15:05:13 浏览: 17
好的,我选择爬取豆瓣电影Top250的数据进行分析。
首先,在命令行中输入以下命令安装Scrapy:`pip install scrapy`
然后,创建一个新的Scrapy项目,命名为douban_top250:`scrapy startproject douban_top250`
接下来,进入douban_top250/spiders目录,创建一个名为douban.py的Spider文件,在其中编写爬虫代码。以下是示例代码:
```python
import scrapy
class DoubanSpider(scrapy.Spider):
name = 'douban'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
for movie in response.xpath('//div[@class="info"]'):
yield {
'title': movie.xpath('div[@class="hd"]/a/span[@class="title"]/text()').get(),
'year': movie.xpath('div[@class="bd"]/p/text()').re('\d{4}')[0],
'score': movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').get(),
'director': movie.xpath('div[@class="bd"]/p/text()').re('导演: (.+?)\n')[0],
'actors': movie.xpath('div[@class="bd"]/p/text()').re('主演: (.+?)\n')[0],
'url': movie.xpath('div[@class="hd"]/a/@href').get()
}
next_page = response.xpath('//span[@class="next"]/a/@href')
if next_page:
yield response.follow(next_page.get(), self.parse)
```
该爬虫会爬取豆瓣电影Top250的电影标题、上映年份、评分、导演、主演和详情页链接,并自动翻页爬取所有数据。
接下来,在命令行中进入douban_top250目录,运行以下命令启动爬虫,并将结果保存到movies.json文件中:`scrapy crawl douban -o movies.json`
等待爬虫运行完毕后,我们可以使用Pandas进行数据分析。以下是示例代码:
```python
import pandas as pd
df = pd.read_json('movies.json')
df['score'] = df['score'].astype(float)
df['year'] = df['year'].astype(int)
# 统计各年份电影数量
grouped_year = df.groupby('year')['title'].count().reset_index()
grouped_year.columns = ['year', 'count']
print(grouped_year)
# 统计平均评分最高的导演
grouped_director = df.groupby('director')['score'].mean().reset_index()
grouped_director = grouped_director.sort_values(by='score', ascending=False).reset_index(drop=True)
print(grouped_director.head(10))
```
运行上述代码后,可以得到每个年份的电影数量和平均评分最高的导演等信息。