Python Spider 抓取猫眼电影TOP100
- """
- 抓取猫眼电影TOP100
- """
- import re
- import time
- import requests
- from bs4 import BeautifulSoup
- class SpiderMaoyan(object):
- def __init__(self):
- # 通过分析URL可以发现, 猫眼电影TOP100页面是通过 offset + 10 来分页的
- self.url = "http://maoyan.com/board/4?offset={0}"
- # 设置一下UA, 否则有可能提示你访问被禁止了
- self.headers = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
- "Chrome/66.0.3359.139 Safari/537.36"
- }
- # 定义需要提取的内容字段
- self.fields = ("id", "name", "movieUrl", "imgUrl", "star", "releaseTime", "score")
- def handler(self, offset=0):
- while offset < 100:
- response = requests.get(self.url.format(offset), headers=self.headers)
- if response.status_code == 200:
- print("INFO -> Current URL: <%s>" % response.url)
- # 编码处理一下, 不然有可能中文显示乱码
- r_html = response.text.encode(response.encoding).decode("utf-8")
- # 构建一个 BeautifulSoup 对象, 用于后续的标签、内容提取
- soup = BeautifulSoup(r_html, "html5lib")
- # 继续分析网页源代码, 发现每部影片都存在 <dd></dd> 标签中
- tags = soup.select("dd")
- # 提取内容
- for tag in tags:
- # id、name、movieUrl
- obj = tag.find("p", class_="name").select_one("a")
- _id = re.search(r"movieId:(\d+)", obj.get("data-val")).group(1)
- _name = obj.string
- _movieUrl = "http://maoyan.com" + obj.get("href")
- # img
- # Tips: 可以将图片地址后面的分辨率去掉, 保存高清大图地址 .split("@")[0]
- _imgUrl = tag.find("img", class_="board-img").get("data-src")
- # star
- # Tips: 中文标点
- _star = tag.find("p", class_="star").string.strip().split(":")[-1]
- # releaseTime
- # Tips: 中文标点
- _releaseTime = tag.find("p", class_="releasetime").string.split(":")[-1]
- # score
- _score = tag.find("p", class_="score").get_text()
- # 接下来就可以将数据写入存储了
- # Tips: 这种 SQL 生成方式有必要验证 key/val 是否成对出现
- print(
- "INSERT INTO TABLE_NAME (%s) VALUE %s;" % (
- ", ".join(self.fields), tuple([_id, _name, _movieUrl, _imgUrl, _star, _releaseTime, _score])
- )
- )
- # 偏移量自增
- offset += 10
- # 有必要停顿一下
- time.sleep(.9)
- else:
- print(response.reason)
- exit(999)
- if __name__ == "__main__":
- spider = SpiderMaoyan()
- spider.handler()
Python Spider 抓取猫眼电影TOP100的更多相关文章
- Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)
requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...
- python应用-爬取猫眼电影top100
import requests import re import json import time from requests.exceptions import RequestException d ...
- 爬虫_python3_抓取猫眼电影top100
使用urllib,request,和正则表达式,多线程进行秒抓,以及异常处理结果: import urllib,re,json from multiprocessing import Pool#多进程 ...
- Requests+正则表达式抓取猫眼电影TOP100
spider.py # -*- coding:utf-8 -*- import requests import re import json import codecs from requests.e ...
- python requests抓取猫眼电影
1. 网址:http://maoyan.com/board/4? 2. 代码: import json from multiprocessing import Pool import requests ...
- 抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法
import requests import re import json import time from bs4 import BeautifulSoup from pyquery import ...
- Python爬虫项目--爬取猫眼电影Top100榜
本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构, ...
- python 爬取猫眼电影top100数据
最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...
- 爬虫系列(1)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
随机推荐
- Excel 从字符串中提取日期值
因为工作需要,Excel 表中有一串字符,需要将字符里的日期提取出,并转成日期值. 需要转成如下格式: 可使用以下公式. =DATEVALUE(TEXT(MID(I2,1,4)+1&" ...
- saltops 安装及相关环境安装
本次布署测试环境 阿里云 Centos 7.3 1.安装nginx,这里采用yum 安装方式 A.yum install nginx B.创建开机启动 systemctl enable nginx.s ...
- sqlserver2008设置定时任务
SQL2008 创建定时任务作业 1.打开[SQL Server Management Studio],在[对象资源管理器]列表中选择[SQL Server 代理]: --2.鼠标右击[SQL S ...
- Vue基础汇总实践
1)双向绑定: <div id="app"> <p>{{message}}</p> <input v-model=" ...
- 十二、jdk工具之jcmd介绍(堆转储、堆分析、获取系统信息、查看堆外内存)
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- python 可视化 二维坐标标注等等
基本画图操作: import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3,3,50) y1 = 2*x+1 y2 = ...
- 杂项:SQLite
ylbtech-杂项:SQLite SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是 ...
- CefSharp v62修改,支持.net4.0
吐槽一下,博客园久了没有上,账号没了,重新申请一个. cesharp v62版本,内核采用最新的Cef 62,支持最新的Grid布局. 由于官方的cefsharp 采用.net4.5.2开发.怎么办怎 ...
- 检测2个公网IP的GRE隧道是否通的方法,使用PPTP拨号检测。
检测2个公网IP的GRE隧道是否通的方法,使用PPTP拨号检测. 因为PPTP是建立在GRE隧道基础上的. PPTP 防火墙开放 TCP 1723防火墙开放 IP protocol 47,即GRENA ...
- 6.13-C3p0连接池配置,DBUtils使用
DBCP连接池 一.C3p0连接池配置 开源的JDBC连接池 使用连接池的好处: 减轻数据库服务器压力 数据源: ComboPooledDataSource ComboPooledDataSource ...