urllib3、re、json 爬取猫眼电影https://m.maoyan.com/asgard/board/4 top100 的排名、图片、电影名称、主演、上映日期、得分等,存储到top100.txt文件中
时间: 2024-01-11 20:02:49 浏览: 124
python爬虫练习:爬图片
好的,您需要使用 Python 编写爬虫程序,使用 urllib3 库进行网页请求,使用 re 库进行网页内容的正则匹配,使用 json 库对匹配到的数据进行处理,最后将处理后的数据存储到 top100.txt 文件中。
以下是示例代码:
```python
import urllib3
import re
import json
# 创建 urllib3.PoolManager 对象
http = urllib3.PoolManager()
# 定义目标网页 URL
url = 'https://m.maoyan.com/asgard/board/4'
# 发送 HTTP 请求,获取网页内容
response = http.request('GET', url, headers={'User-Agent': 'Mozilla/5.0'})
html_content = response.data.decode('utf-8')
# 使用正则表达式匹配电影信息
pattern = r'<div class="movie-item-info">.*?' \
r'<p class="name">(?P<name>.*?)</p>.*?' \
r'<p class="star">(?P<actors>.*?)</p>.*?' \
r'<p class="releasetime">(?P<release_date>.*?)</p>.*?' \
r'<p class="score"><i class="integer">(?P<score1>.*?)</i>' \
r'<i class="fraction">(?P<score2>.*?)</i></p>.*?</div>.*?' \
r'<div class="movie-item-number score-num"><p class="realtime">.*?' \
r'<i class="board-index board-index-.*?">(?P<rank>\d+)</i>.*?' \
r'<img data-src="(?P<image>.*?)".*?>.*?</div>'
matches = re.finditer(pattern, html_content, re.S)
# 遍历匹配结果,构造电影字典,并将所有电影保存到列表中
movies = []
for match in matches:
movie_dict = match.groupdict()
movie_dict['actors'] = movie_dict['actors'].strip()[3:]
movie_dict['score'] = float(movie_dict['score1'] + movie_dict['score2'])
del movie_dict['score1']
del movie_dict['score2']
movies.append(movie_dict)
# 将电影列表保存到 top100.txt 文件中
with open('top100.txt', 'w', encoding='utf-8') as f:
f.write(json.dumps(movies, ensure_ascii=False, indent=4))
```
该程序会爬取猫眼电影 Top 100 网页,并使用正则表达式从网页内容中提取出电影排名、图片 URL、电影名称、主演、上映日期、得分等信息,最后将所有电影信息以 JSON 格式保存到 top100.txt 文件中。注意需要添加请求头,否则猫眼电影会拒绝请求。
阅读全文