学习目的:

  通过一个一个简单的爬虫应用,初窥门径。

正式步骤


Step1:流程框架

  1. 抓取单页内容:利用requests请求目标站点,得到单个页面的html代码,返回结果;
  2. 正则表达式分析:根据html页面代码分析得到猫眼电影的名称、主演、上映时间、评分、图片信息等;
  3. 保存至文件:通过文件的形式将结果保存,每一部电影一个结果一行json字符串;
  4. 开启循环及多线程:对页面内容进行遍历,开启多线程提高抓取效率

Step2:实际步骤+分析

1. 在pycharm中新建一个Python项目,新建一个文件spider.py

2.运行代码:

# -*-  coding:utf-8 -*-

import requests
import re
import json
from requests.exceptions import RequestException
from multiprocessing import Pool def get_page_html(url):
#设置headers是猫眼加了反爬机制
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
try:
response = requests.get(url,headers=headers)
if response.status_code == 200:
return response.text
return None #如果页面状态码不为200,则函数终止
except RequestException:
return None #如果测试代码异常,则无返回,函数结束 def parse_page_html(html):
pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
+'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
+'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)
items = re.findall(pattern,html)
for item in items:
yield {
'index':item[0],
'image':item[1],
'name':item[2],
'actor':item[3].strip()[3:],
'date':item[4].strip()[5:],
'score':item[5]+item[6] } def save_file(content):
with open("detail.txt",'a',encoding='utf-8') as f:
f.write(json.dumps(content,ensure_ascii=False)+'\n')
f.close() def main(offset):
url = "http://maoyan.com/board/4?offset=" + str(offset)
html = get_page_html(url)
for detail in parse_page_html(html):
save_file(detail) if __name__ == '__main__':
# for offset in range(10):
# main(offset*10)
pool = Pool()
pool.map(main,[i*10 for i in range(10)])

运行结果不添加了,此外,最后注释掉的代码,功能是非多线程的

学习总结:


  爬虫涉及的Python基础应用非常多,还是那个8/2原则,先掌握20%最常用的,最重要的,再慢慢熟悉80%需要学会用即可的功能

Python爬虫学习==>第十章:使用Requests+正则表达式爬取猫眼电影的更多相关文章

  1. PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)

    利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...

  2. python爬虫知识点总结(九)Requests+正则表达式爬取猫眼电影

    一.爬取流程 二.代码演示 #-*- coding: UTF-8 -*- #_author:AlexCthon #mail:alexcthon@163.com #date:2018/8/3 impor ...

  3. Requests+正则表达式爬取猫眼电影

    目标 提取出猫眼电影TOP100的电影名称.时间.评分.图片等信息,提取站点的URL为http://maoyan.com/board/4,提取的结果以文本的形式保存下来. 准备工作 请安装好reque ...

  4. Requests+正则表达式爬取猫眼电影(TOP100榜)

    猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...

  5. Requests+正则表达式 爬取猫眼电影

    代码: import re import json from multiprocessing import Pool import requests from requests.exceptions ...

  6. Python爬虫实战之Requests+正则表达式爬取猫眼电影Top100

    import requests from requests.exceptions import RequestException import re import json # from multip ...

  7. python爬虫从入门到放弃(九)之 Requests+正则表达式爬取猫眼电影TOP100

    import requests from requests.exceptions import RequestException import re import json from multipro ...

  8. 14-Requests+正则表达式爬取猫眼电影

    '''Requests+正则表达式爬取猫眼电影TOP100''''''流程框架:抓去单页内容:利用requests请求目标站点,得到单个网页HTML代码,返回结果.正则表达式分析:根据HTML代码分析 ...

  9. Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)

    requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...

随机推荐

  1. 第六章 组件 55 组件-使用components定义私有组件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  2. GIT和SVN的区别(面试)

    Cit是分布式,而SVN不是分布式 存储内容的时候,Git按元数据方式存储,而SVN是按文件 Git没有一个全局版本号,SVN有,目前为止这是SVN相比Git缺少的最大的一个特征 Git的内容完整性要 ...

  3. 如何使用Laravel Debugbar?

    非常好用的Laravel debug工具,一定要安装 Chrome/FireFox 都会自带一些 debug 工具可以帮助我们 debug 前端,如 CSS.JavaScript… 等,但若要 deb ...

  4. maven项目bulid失败_No compiler is provided in this environment.

    错误信息如下: [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather ...

  5. 30秒钟解决MariaDB插入汉字时出现错误

    示例: create table demo( name varchar(10), sex varchar(5) )engine=innoDB default charset=utf8; 表的后面加上指 ...

  6. spring + junit 测试

    spring + junit 测试 需要一个工具类 package com.meizu.fastdfsweb; import org.junit.runner.RunWith; import org. ...

  7. mysql explain 执行计划详解

    1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询.   2).select_type列常见的有: A:simple ...

  8. Gym 100971D 单调栈

    D - Laying Cables Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u ...

  9. JAVA中java.lang.OutOfMemoryError常见的解决方式

    在开发中我们很多人都遇到过内存溢出的情况,其实内存溢出分几种形式: 1.tomcat中java.lang.OutOfMemoryError: PermGen space异常处理(最常见的) 概念大家可 ...

  10. AtCoder AGC038D Unique Path (图论)

    题目链接 https://atcoder.jp/contests/agc038/tasks/agc038_d 题解 orz zjr神仙做法 考虑把所有\(C_i=0\)的提示的两点连边,那么连完之后的 ...