"""
抓取猫眼电影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的更多相关文章

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

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

  2. python应用-爬取猫眼电影top100

    import requests import re import json import time from requests.exceptions import RequestException d ...

  3. 爬虫_python3_抓取猫眼电影top100

    使用urllib,request,和正则表达式,多线程进行秒抓,以及异常处理结果: import urllib,re,json from multiprocessing import Pool#多进程 ...

  4. Requests+正则表达式抓取猫眼电影TOP100

    spider.py # -*- coding:utf-8 -*- import requests import re import json import codecs from requests.e ...

  5. python requests抓取猫眼电影

    1. 网址:http://maoyan.com/board/4? 2. 代码: import json from multiprocessing import Pool import requests ...

  6. 抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法

    import requests import re import json import time from bs4 import BeautifulSoup from pyquery import ...

  7. Python爬虫项目--爬取猫眼电影Top100榜

    本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构,  ...

  8. python 爬取猫眼电影top100数据

    最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...

  9. 爬虫系列(1)-----python爬取猫眼电影top100榜

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...

随机推荐

  1. php 中的引用

    php 有类似 C 中的指针 &. 但在 php 中叫 引用. 虽然和 传地址很像,但是差别很大.(估计底层实现应该差不多,只是猜想,有机会再研究) 这里有一个关于 php 的对象的赋值其实就 ...

  2. hashcode 知识点

    java中常用的哈希码的算法. Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样. String类的hashCode.根据Str ...

  3. grep和egrep正则表达式

    Linux上文本处理三剑客 grep :文本过滤( 模式:pattern) 工具 grep, egrep, fgrep (不支持正则表达式搜索,但搜索纯文本的数据最快) sed :stream edi ...

  4. 虚拟机设置成桥接模式x86_openwrt也可以上网

    一.虚拟机桥接设置 1. 2.选择 虚拟机 >>设置 三.ip设置,要在同一网段,能够分配到路由的ip地址 1.主机ip 2.虚拟机中x86_openwrt ip 四.openwrt设置 ...

  5. Mycat 数据库分库分表中间件

    http://www.mycat.io/ Mycat 国内最活跃的.性能最好的开源数据库中间件! 我们致力于开发高性能的开源中间件而努力! 实体书Mycat权威指南 »开源投票支持Mycat下载 »s ...

  6. 创建mysql 用户并限定其操作主机 和 数据库

    参考链接 http://www.cnblogs.com/top5/archive/2010/09/14/1825571.html ******** GRANT ALL ON push.* TO pus ...

  7. vs2017 编译JRTPLIB

    一. JRTPLIB简介 RTP 是目前解决流媒体实时传输问题的最好办法,而JRTPLIB是一个用C++语言实现的RTP库,它完全遵循RFC 1889设计,目前已经可以运行在Windows.Linux ...

  8. jenkins 定时构建 位置

    定时器构建语法 * * * * * 星号中间用空格隔开 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三个*表示一个月的第几天,取值1~31 第四个*表示第几月,取值1~12 第五 ...

  9. asp控制项目超时

    If Session("username")="" or isnull(Session("username")) Then %> &l ...

  10. 【Linux_Unix系统编程】Chapter10 时间

    chapter10 时间 1:真实时间:度量这一时间的起点有二:(1)某个标准点:(2)进程生命周期内的某个固定时点(通常为程序启动) 2:进程时间:一个进程所使用的CPU时间总量,适用于对程序,算法 ...