python爬虫爬取豆瓣数据
时间: 2023-11-11 12:57:45 浏览: 147
可以使用Python的第三方库BeautifulSoup和requests来进行豆瓣数据的爬取。以下是一个简单示例代码:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/top250'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 发起请求
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
# 提取电影信息
for movie in soup.select('.item'):
title = movie.select_one('.title').text
rating = movie.select_one('.rating_num').text
print(title, rating)
```
这段代码通过发送HTTP请求获取豆瓣电影Top250页面的HTML内容,并使用BeautifulSoup库对HTML进行解析,然后提取出电影的标题和评分信息并打印出来。
相关问题
python爬虫爬取豆瓣数据源代码
以下是一个简单的Python爬虫爬取豆瓣电影Top250的代码示例:
```
import requests
from bs4 import BeautifulSoup
# 发送请求
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析数据
movies = soup.find_all('div', class_='info')
for movie in movies:
title = movie.find('span', class_='title').text.strip()
score = movie.find('span', class_='rating_num').text.strip()
quote = movie.find('span', class_='inq').text.strip()
print('电影名:', title)
print('评分:', score)
print('评价:', quote)
# 相关问题
1. 你可以解释一下代码中的requests和BeautifulSoup库吗?
2. 为什么要添加headers头部信息?
3. 如何将爬取到的数据保存到本地?
python爬虫爬取豆瓣电影数据
### 使用Python编写爬虫程序抓取豆瓣电影数据
为了实现这一目标,首先需要确保环境中已安装必要的库。这些库包括`requests`和`BeautifulSoup`,前者用于发送HTTP请求,后者则负责解析HTML文档[^2]。
#### 安装所需库
可以通过pip命令轻松安装上述两个库:
```bash
pip install requests beautifulsoup4
```
#### 编写基本的爬虫脚本
下面是一个简单的例子,展示了如何利用这两个库来获取并解析来自豆瓣网站上的页面内容:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/top250' # 豆瓣TOP250页面链接
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
titles = []
for tag in soup.find_all('div', class_='hd'):
title = tag.a.span.string.strip()
titles.append(title)
print(titles[:10]) # 打印前十个电影名称作为示例
else:
print(f"Failed to retrieve the page with status code {response.status_code}")
```
这段代码会访问指定URL,并尝试提取该网页上所有的电影标题。需要注意的是,在实际操作过程中可能还需要处理更多细节问题,比如翻页逻辑、异常情况下的重试机制等。
此外,对于更复杂的需求,如登录验证或动态加载的内容,则可以考虑引入其他工具和技术栈,例如Selenium WebDriver或者Scrapy框架。
阅读全文
相关推荐














