1. 获取网页,使用requests三方库
"""获取网页"""
headers = {
"User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
}
url = 'http://maoyan.com/board/4?offset=' + str(offset)
response = requests.get(url, headers=headers)
说明
:response可以使用两种方法获取网页(text,content)
text:拿到网页的文本,如果乱码,不能进行其它处理
content:拿到网页的二进制,后面可是使用decode('utf-8')进行解码.例:response.content.decode('utf-8')
2. 使用正则解析获得的html
pattern = re.compile('movieId.*?>.*?<img.*?<img.*?alt="(.*?)" class.*?', re.S)
# re.S代表忽略空格 str.strip()去除字符串两边的空格,换行符等(内部参数没有时,去除空格等)
movie_names = re.findall(pattern, html) # 拿到的是一个集合
pattern = re.compile('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>', re.S)
movie_scores = re.findall(pattern, html)
pattern = re.compile('<div class="movie-item-info">.*?<p class="name"><a href="(.*?)"', re.S)
details = re.findall(pattern, html)
3. 图片下载
思路:获取到图片的链接img_url,使用requests.get(img_url),然后获取到二进制.最后写入文件
实现:
response = requests.get(img_url)
result = response.content
filename = img_url.split('/')[-1].split('@')[0]
with open(f'./maoyan_cover/{filename}', 'wb') as f:
f.write(result)