爬取艺恩电影排行榜用bs4爬取六页信息
时间: 2024-03-13 14:23:54 浏览: 61
好的,我可以为您提供一个示例代码来爬取艺恩电影排行榜的六页信息。请先确保您已经安装了bs4模块。
```python
import requests
from bs4 import BeautifulSoup
for page in range(1, 7):
url = f'https://www.endata.com.cn/BoxOffice/BO/Year/total?year=2021&pIndex={page}'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
table = soup.find('table', class_='tabBox')
rows = table.find_all('tr')
for row in rows[1:]:
cols = row.find_all('td')
name = cols[0].find('a').text
score = cols[1].find_all('span')[-1].text
print(name, score)
```
这段代码会爬取2021年的电影排行榜前六页信息。每页包含50部电影,因此总共会输出300部电影的名称和评分。注意,为了避免被反爬虫机制封锁,建议加入适当的延时等反爬虫措施。
相关问题
Python应该如何爬取豆瓣电影排行榜
可以使用Python中的库进行网页爬取,如requests和BeautifulSoup。具体步骤可以参考以下代码:
```
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/chart'
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.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.find_all('div', class_='pl2')
for movie in movies:
title = movie.find('a').text.strip()
rating = movie.find('span', class_='rating_nums').text.strip()
print(title, rating)
```
这段代码通过requests库发送GET请求获取豆瓣电影排行榜的网页内容,并使用BeautifulSoup库解析网页内容。最后找到所有电影的div标签,并提取电影名称和电影评分信息。
爬取哔哩哔哩电影排行榜前20页数据
要爬取B站(哔哩哔哩)的电影排行榜前20页的数据,首先你需要了解B站的网页结构,通常这种网站会有API供开发者使用,但是由于B站的反爬策略,直接抓取其公开页面可能会受到限制。如果没有官方API,我们可以通过网络爬虫技术来获取数据,但需要注意遵守网站的robots.txt规则并尊重版权。
以下是一个简单的Python爬虫示例,使用`requests`库和BeautifulSoup库来解析HTML。请注意,这个示例假设你能找到公开的、可爬取的URL,实际操作时可能需要登录或使用动态加载的内容:
```python
import requests
from bs4 import BeautifulSoup
# 假设这是电影排行榜的URL
url_base = "https://movie.bilibili.com/rank"
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.3'
}
# 创建一个列表来保存数据
movies_data = []
# 遍历前20页
for page_num in range(1, 21):
# 构造完整的URL
url = f"{url_base}?order=hot&offset={page_num * 20}"
# 发送请求
response = requests.get(url, headers=headers)
# 检查请求是否成功
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 找到电影信息的位置,这取决于B站的HTML结构,请根据实际情况调整
movie_list = soup.find_all('div', class_='item')
for movie in movie_list:
title = movie.find('a', class_='title').text
rank = int(movie.find('span', class_='rank').text.split()[0]) # 排名位置
movies_data.append({'title': title, 'rank': rank})
# 如果不是最后一页,等待一些时间防止被封禁
time.sleep(1)
# 数据处理后,你可以选择保存为CSV文件或打印出来
movies_df = pd.DataFrame(movies_data)
movies_df.to_csv('bilibili_movie_rank.csv', index=False)
```
阅读全文