python爬虫request爬取豆瓣top100
时间: 2023-11-12 15:45:54 浏览: 202
你可以使用Python的requests库来爬取豆瓣电影的Top100页面。下面是一个简单的示例代码,可以帮助你入门:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/top250'
# 发送请求并获取页面内容
response = requests.get(url)
content = response.text
# 使用BeautifulSoup解析页面内容
soup = BeautifulSoup(content, 'html.parser')
movies = soup.find_all('div', class_='hd')
# 打印电影名称
for movie in movies:
name = movie.a.span.text
print(name)
```
这段代码中,我们首先使用requests库发送GET请求获取豆瓣电影Top250页面的内容,然后使用BeautifulSoup库对页面进行解析,找到包含电影名称的节点,并打印出来。
你可以根据自己的需求修改代码,例如获取其他信息或者进一步处理数据。另外,记得要遵守网站的爬取规则,并设置适当的请求头和延时,以免给服务器带来过大的负担。
相关问题
python scrapy.爬取豆瓣某电影影评并进行数据分析
好的,我来为您介绍一下如何使用Python的Scrapy框架爬取豆瓣某电影的影评并进行数据分析:
1. 环境搭建:
首先需要安装Scrapy库,可以使用pip命令:
```
pip install scrapy
```
2. 创建Scrapy项目:
```
scrapy startproject douban_comments
cd douban_comments
```
3. 编写爬虫:
在spiders目录下创建一个新的爬虫文件,例如douban_spider.py:
```python
import scrapy
from douban_comments.items import DoubanCommentsItem
class DoubanSpider(scrapy.Spider):
name = "douban"
allowed_domains = ["movie.douban.com"]
start_urls = ["https://movie.douban.com/subject/1292052/comments?status=P"]
def parse(self, response):
comments = response.xpath('//div[@class="comment"]')
for comment in comments:
item = DoubanCommentsItem()
item['user'] = comment.xpath('.//span[@class="comment-info"]/a/text()').get()
item['rating'] = comment.xpath('.//span[@class="comment-info"]/span[2]/@title').get()
item['content'] = comment.xpath('.//span[@class="short"]/text()').get()
item['time'] = comment.xpath('.//span[@class="comment-time "]/@title').get()
yield item
# 翻页
next_page = response.xpath('//span[@class="next"]/a/@href').get()
if next_page:
yield scrapy.Request(url=response.urljoin(next_page), callback=self.parse)
```
4. 定义Item:
在items.py中定义要爬取的数据结构:
```python
import scrapy
class DoubanCommentsItem(scrapy.Item):
user = scrapy.Field()
rating = scrapy.Field()
content = scrapy.Field()
time = scrapy.Field()
```
5. 运行爬虫:
```
scrapy crawl douban -o comments.json
```
6. 数据分析:
爬取完成后,可以使用pandas进行数据分析:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_json('comments.json')
# 清洗数据
df['time'] = pd.to_datetime(df['time'])
df['rating'] = df['rating'].str.extract('(\d+)').astype(int)
# 分析评分分布
rating_counts = df['rating'].value_counts().sort_index()
rating_counts.plot(kind='bar')
plt.title('评分分布')
plt.xlabel('评分')
plt.ylabel('数量')
plt.show()
# 分析评论趋势
df.set_index('time').resample('D').size().plot()
plt.title('评论数量趋势')
plt.xlabel('日期')
plt.ylabel('数量')
plt.show()
```
通过以上步骤,我们可以爬取豆瓣某电影的影评数据,并进行简单的数据分析。这个过程可以帮助我们了解电影的口碑变化趋势,以及观众对电影的总体评价。
python scrapy-redis爬取豆瓣电影top250
好的,下面是简单的步骤:
1. 安装 scrapy 和 scrapy-redis
```python
pip install scrapy scrapy-redis
```
2. 创建一个 Scrapy 项目
```python
scrapy startproject douban_top250
```
3. 在 settings.py 中加入 scrapy-redis 的相关设置
```python
# 使用 scrapy-redis 的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 使用 scrapy-redis 的去重过滤器
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 允许暂停、恢复爬虫
SCHEDULER_PERSIST = True
# 设置 redis 为 item pipeline
ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline': 300
}
# 设置 redis 服务器地址和端口号
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
```
4. 编写 spider
```python
# coding:utf-8
import scrapy
from scrapy import Request
from scrapy_redis.spiders import RedisSpider
class DoubanTop250Spider(RedisSpider):
"""爬取豆瓣电影 Top 250"""
name = 'douban_top250'
allowed_domains = ['movie.douban.com']
# 在 Redis 中设置起始爬取的 URL
redis_key = 'douban:start_urls'
def parse(self, response):
# 获取电影列表
movie_list = response.css('.grid_view li')
for movie in movie_list:
# 获取电影名字和详情页 URL
title = movie.css('.title::text').extract_first()
detail_url = movie.css('.hd a::attr(href)').extract_first()
yield Request(detail_url, callback=self.parse_detail, meta={'title': title})
# 获取下一页的链接
next_url = response.css('.next a::attr(href)').extract_first()
if next_url:
yield Request(next_url, callback=self.parse)
def parse_detail(self, response):
# 获取电影详情
title = response.meta['title']
score = response.css('.rating_num::text').extract_first()
yield {'title': title, 'score': score}
```
5. 运行 scrapy-redis 爬虫
首先要在终端中启动 redis 服务:
```python
redis-server
```
然后在一个终端中运行 scrapy-redis 爬虫:
```python
scrapy runspider douban_top250.py
```
在另一个终端中向 Redis 中添加起始 URL:
```python
redis-cli lpush douban:start_urls https://movie.douban.com/top250
```
爬取结果会自动保存到 Redis 数据库中。你可以通过 redis-cli 或者其他 Redis 客户端查看结果。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)