您的位置:首页 > 编程语言 > Python开发

python3爬取猫眼电影(电影名称和图片)存到本地使用进程池

2017-06-29 16:02 447 查看
# encoding:utf-8
# 引用的是beautifulsoup 解析
from bs4 import BeautifulSoup
import requests # 用的requests 获取的源码
from multiprocessing import Pool # 进程池
from requests import HTTPError # 错误处理


# 定义get_html函数用来获取源码 (url你传入的链接)
def get_html(url):
try: # 异常处理
head = {'User-Agent': 'Mozilla/5.0'} # 模拟请求的头部
request = requests.get(url, headers=head) # 得到你的url加入请求头
# 设置你的编码 encoding是请求头的编码 apprent_encoding 是从网页中分析响应内容的编码方式
request.encoding = request.apparent_encoding
return request.content # 返回得到的内容图片是二进制的用content一般象文字类的用text
except HTTPError as e:
print(e) # 输出错误
return ' '


def parser_html(demo): # 接受的是你的网页源代码
# 使用beautifulsoup解析
soup = BeautifulSoup(demo, 'lxml')
# 找到这个链接图片中的练级
yuan = soup.select('div.movie-poster img["data-src"]')
# 找到这个标题
title = soup.select('div.channel-detail.movie-item-title > a[target="_blank"]')
# 放入到字典里面
for img, title in zip(yuan, title):
yuan = img['data-src'] # 得到图片的链接
title = title.get_text() # 图片的名字
yuan1 = requests.get(yuan).content # 得到图片
op = open('D:\\妹子图\\' + title + '.jpg', 'wb') # 图片是jpg的形式加上图片的名字
op.write(yuan1) # 写入图片
op.close() # 关闭文件


# 主函数 接受url
def main(url):
# 调用get_html得到 获取源码后赋给html
html = get_html(url)
# 传入到你的解析函数中
parser_html(html)


# 代码调试片段
if __name__ == '__main__':
# 找到前十页的url使用的是format拼接
url = ['http://maoyan.com/films?offset={}'.format(i) for i in range(0, 271, 30)]
pool = Pool(4) # 创建进程池 这个4 是指的你的内核数
pool.map(main, url)  #  调用你的主函数,传入url列表


希望大家多评论,共同学习,共同进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: