美文网首页
day66-爬虫

day66-爬虫

作者: barriers | 来源:发表于2019-02-18 19:30 被阅读0次

1http基本原理

URI和URL
URI(统一资源标识符)包括URL(统一资源定位符)和URN(统一资源名称)
HTTP和HTTPS传输协议
HTTP是超文本传输协议;HTTP传输没有加密
HTTPS在HTTP基础上加入SSL套接字层,传输内容通过SSL加密
安全通道保证数据传输安全
能够确认网站真实性
请求方法:get和post
get请求的参数在url里,最多只有1024字节
post请求数据一般通过表单提交,不会出现在url里,大小没有限制
put作修改用;post作新增用
cookie和session区别
http请求是一个无状态的请求
cookie保存在本地;session保存在服务器

2urllib库

Urllib是基于http的高层库,它有以下三个主要功能:
1.request处理客户端的请求
2.response处理服务端的响应
3.parse会解析url

3用爬虫爬取猫眼网站信息

findall(匹配规则,字符串)匹配规则中有用括号括起来的内容就返回括号中的匹配内容,否则返回匹配到的内容;
compile(匹配规则,忽略空格)
str1.strip()删除字符串首位和末位的空格
''.join(score)以空串连接score中的所有内容

import json
import re    
import requests        
# 获取单个网页
def get_page(page):
    # 网址
    url = 'http://maoyan.com/board/4?offset='+str(page)
    # 伪装请求头
    headers = {
        "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
    }    
    # 请求网页并返回响应
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.content.decode('utf-8')
    return None
# 获取所有页面
def get_all_pages():
    result = []
    for i in range(10):
        page = i*10
        html = get_page(page)
        result_list = parse_page(html)
        result.append(result_list)
    return result    
# 写入图片文件
def save_cover_image(cover_url):
    response = requests.get(cover_url)
    result = response.content
    filename = cover_url.split('/')[-1].split('@')[0]
    with open('./images/%s' % filename, 'wb') as f:
        f.write(result)    
# 解析网页
def parse_page(html):
    # 1.片名
    # compile(匹配规则,忽略空格)
    pattern = re.compile('movieId.*?>.*?<img.*?<img.*?alt="(.*?)" class.*?', re.S)
    # findall(匹配规则,字符串)返回括号中的匹配内容
    movie_names = re.findall(pattern, html)
    # 2.主演
    pattern = re.compile('<p class="star">(.*?)</p>', re.S)
    actors = re.findall(pattern, html)
    # str1.strip()删除字符串首位和末位的空格
    actors = [actor.strip() for actor in actors]
    print(actors)
    # 3.上映时间
    pattern = re.compile('<p class="releasetime">(.*?)</p>', re.S)
    releasetime = re.findall(pattern, html)
    releasetime = [time.strip() for time in releasetime]
    # 4.封面图片
    pattern = re.compile('movieId.*?>.*?<img.*?<img.*?data-src="(.*?)" alt.*?', re.S)
    covers = re.findall(pattern, html)
    # 5.排名
    pattern = re.compile('<i class="board-index board-index-.*?">(.*?)</i>', re.S)
    ranks = re.findall(pattern, html)
    ranks = [rank.strip() for rank in ranks]
    # 6.评分
    pattern = re.compile('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>', re.S)
    scores = re.findall(pattern, html)
    # ''.join(score)以空串连接score中的所有内容
    scores = [''.join(score) for score in scores]
    # 7.详细信息链接
    pattern = re.compile('<div class="movie-item-info">.*?<p class="name"><a href="(.*?)" title=.*?', re.S)
    details = re.findall(pattern, html)
    details = [detail.strip() for detail in details]    
    # 组装json
    message = [({'movie_name': movie_names[i], 'actor': actors[i], 'releasetime':
        releasetime[i], 'covers': covers[i], 'rank': ranks[i], 'score': scores[i],
                'detail': details[i]},save_cover_image(covers[i])) for i in range(len(details))]
    print(message)
    return message        
# 保存json文件
def save_json_file(result):
    json_str = json.dumps(result, ensure_ascii=False)
    with open('movie.json', 'w', encoding='utf-8') as f:
        f.write(json_str)    
def main():
    result = get_all_pages()
    print(result)
    save_json_file(result)
if __name__ == '__main__':
    main()

相关文章

  • day66-爬虫

    1http基本原理 URI和URLURI(统一资源标识符)包括URL(统一资源定位符)和URN(统一资源名称)HT...

  • Day66-今日总结

    一、今日总结: 1、接待会员 9:00接待尹倩(谈升卡) 19:30接待周建芬(体验)/车万方 2、微信邀约 给所...

  • 11.20-11.26

    本周目标 爬虫 爬虫 爬虫 爬虫

  • 爬虫入门基础

    Day01 一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫...

  • 01-认识爬虫

    一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫三角之争 网...

  • 爬虫原理与数据抓取之一: 通用爬虫和聚焦爬虫

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索...

  • (了解)通用爬虫和聚焦爬虫--爬虫基础教程(python)(二)

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.我们主要写通用爬虫。 通用爬虫 通...

  • Day66-早起的魅力

    今天早上,宝宝6点醒来喝奶后,我本来很困,但是想着待会7点半得醒来静心,要是睡着了估计就起不来了,于是干脆不睡了。...

  • Python 网络爬虫(一)

    网络爬虫的基本介绍 学习爬虫,我想主要从以下几个方面来切入 -爬虫的原理? -爬虫的作用? -爬虫的实现? -爬虫...

  • 7.爬虫概述

    爬虫概述 知识点: 了解 爬虫的概念 了解 爬虫的作用 了解 爬虫的分类 掌握 爬虫的流程 1. 爬虫的概念 模拟...

网友评论

      本文标题:day66-爬虫

      本文链接:https://www.haomeiwen.com/subject/bryzeqtx.html