python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库) 您所在的位置:网站首页 猫眼数据排行榜最新 python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)

python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)

2024-07-11 02:58| 来源: 网络整理| 查看: 265

姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主

本篇文章未涉及猫眼反爬,主要介绍爬取无反爬内容,战反爬内容请去

python战反爬虫:爬取猫眼电影数据 (二)(Requests, BeautifulSoup, MySQLdb,re等库)

欢迎加声明转载,下载使用 前言:

如今,所有人无时无刻在使用互联网。它就像一张大网,将所有人联系在一起。而总有些可恶的刺头,只让他人看他的内容,不把他的数据给大家用。

正因为如此,我们有了伟大的爬虫工程师,他们手持利剑,突破刺头设置的重重难关,获取数据。今天,就让我们一起,共同大战“猫眼电影”设置的障碍把!

获取初步信息:

我们这次爬取的是猫眼电影前100名排行榜,网址:https://maoyan.com/board/4? 猫眼电影榜单首页

导入python的各种库:

import requests as req import re from bs4 import BeautifulSoup as bs import time as ti

若是没有以上的requests和bs4,请先安装。只需在终端输入:

pip install requests pip install bs4

先试试直接get页面:

url = "https://maoyan.com/board/4?" res = req.get(url) print(res.status_code) print(res.text)

我们会发现状态是,200,但是text却是一堆乱码,很不巧,遇到了第一个障碍,也是最容易解决的。只需要加上headers即可:

url = "https://maoyan.com/board/4?" header = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36", } res = req.get(url,headers = header) print(res.status_code) print(res.text)

至于获取headers,可以在浏览器输入栏里输入 about:version,找到用户代理那一栏即可。

解析:

我们可以使用BeautifulSoup和正则表达式(re)我们先看看我们在这一页面可以爬取到什么信息:

猫眼首页爬取 我是用绿框标出我们这页课爬取的信息:排行,片名,主演,分数,上映时间。按下F12,打开开发者工具,查找相应的位置。

猫眼首页开发者工具 利用正则表达式和解析库BeautifulSoup,取出内容:

num = i.find("i").text #排行 name = i.find("a").get("title") #片名 actor = re.findall("主演:(.*)",i.find("p",class_ = "star").text)[0] #主演 when = re.findall("上映时间:(.*)",i.find("p",class_ = "releasetime").text)[0] #上映时间 score = i.find("i",class_ = "integer").text + i.find("i",class_ = "fraction").text #评分 #这种取变量名的习惯极其不好,期望大家更改

但是这样依旧获取的信息太少,不足以满足需求。为了进一步的爬取信息,我们可以到每一部电影的详细信息里查看。先用解析库和正则表达式把网址抠出来:

url1 = "https://maoyan.com" + i.find("p",class_ = "name").a.get("href")

把获取页面的函数整理一下,获取详细信息的页面:

def link(url): header = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36", } res = req.get(url,headers = header) if res.status_code == 200: return bs(res.text,"lxml") return None movie = link(url1) print(movie)

但是,你不觉得对于返回的东西太奇怪了吗?

去 python战反爬虫:爬取猫眼电影数据 (二)(Requests, BeautifulSoup, MySQLdb,re等库) 吧

后记:

完结了?不,还早着呢!

那下文在哪里呢?看后文之前,要做好与反爬虫斗争的准备。

在下一篇文章:python战反爬虫:爬取猫眼电影数据 (二)(Requests, BeautifulSoup, MySQLdb,re等库) 将会谈论到两道猫眼电音为我们设计的反爬:美团拦截,及多页面爬取。他们都是可恶的反爬虫师,为伟大的爬虫勇士准备着的。

(至于美团的字体加密,会在python战反爬虫:爬取猫眼电影数据 (三)(Requests, BeautifulSoup, MySQLdb,re等库) 谈论到)

爬虫工程师无所畏惧,你准备好了吗!

python战反爬虫:爬取猫眼电影数据 (二)(Requests, BeautifulSoup, MySQLdb,re等库)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有