爬虫又称为网页蜘蛛,是一种程序或脚本。

但重点在于,它能够按照一定的规则,自动获取网页信息。

爬虫的基本原理——通用框架

1.挑选种子URL;

2.讲这些URL放入带抓取的URL列队;

3.取出带抓取的URL,下载并存储进已下载网页库中。此外,讲这些URL放入带抓取URL列队,进入下一循环。

4.分析已抓取列队中的URL,并且将URL放入带抓取URL列队,从而进去下一循环。
5.光理论是不够的。这里顺便免费送大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交流讨教!

爬虫获取网页信息和人工获取信息,其实原理是一致的。

如我们要获取电影的“评分”信息

人工操作步骤:

1.获取电影信息的网页;

2.定位(找到)要评分信息的位置;

3.复制、保存我们想要的评分数据。

爬虫操作步骤:

1.请求并下载电影页面信息;

2.解析并定位评分信息;

3.保存评分数据。

爬虫的基本流程

简单来说,我们向服务器发送请求后,会得到返回的页面,通过解析页面后,我们可以抽取我们想要的那部分信息,并存储在指定文档或数据库中,这样,我们想要的信息会被我们“爬”下来了。

python中用于爬虫的包很多,如bs4,urllib,requests等等。这里我们用requests+xpath的方式,因为简单易学,像BeautifulSoup还是有点难的。

下面我们就使用requests和xpath来爬取豆瓣电影中的“电影名”、“导演”、“演员”、“评分”等信息。

安装requests和lxml库:

1

2

pip install requests

pip install lxml

一、导入模块

1

2

3

4

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

import requests

from lxml import etree

import time #这里导入时间模块,以免豆瓣封你IP

二、获取豆瓣电影目标网页并解析

爬取豆瓣电影《神秘巨星》上的一些信息,地址

https://movie.douban.com/subject/26942674/?from=showing

1

2

3

4

5

6

7

8

9

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

import requests

from lxml import etree

import time 

url = 'https://movie.douban.com/subject/26942674/'

data = requests.get(url).text

s=etree.HTML(data)

#给定url并用requests.get()方法来获取页面的text,用etree.HTML()

#来解析下载的页面数据“data”。

1.获取电影名称。

获取电影的xpath信息并获得文本

1

s.xpath('元素的xpath信息/text()')

这里的xpath信息要手动获取,获取方式如下:

1.如果你是用谷歌浏览器的话,鼠标“右键”–>“检查元素”;

2.Ctrl+Shift+C将鼠标定位到标题;

3.“右键”–>“Copy”–>“Copy Xpath”就可以复制xpath。

这样,我们就把电影标题的xpath信息复制下来了。

1

//*[@id="content"]/h1/span[1]

放到代码中并打印信息

1

2

3

4

5

6

7

8

9

10

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

import requests

from lxml import etree

import time

url = 'https://movie.douban.com/subject/26942674/'

data = requests.get(url).text

s=etree.HTML(data)

 

film_name = s.xpath('//*[@id="content"]/h1/span[1]/text()')

print("电影名:",film_name)

这样,我们爬取豆瓣电影中《神秘巨星》的“电影名称”信息的代码已经完成了,可以在eclipse中运行代码。

得到如下结果:

1

电影名: ['神秘巨星 Secret Superstar']

OK,迈出了第一步,我们继续抓取导演、主演、评分;

1

2

3

4

5

6

7

film_name=s.xpath('//*[@id="content"]/h1/span[1]/text()')#电影名

director=s.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')#编剧

actor1=s.xpath('//*[@id="info"]/span[3]/span[2]/a[1]/text()')#主演1

actor2=s.xpath('//*[@id="info"]/span[3]/span[2]/a[2]/text()')#主演2

actor3=s.xpath('//*[@id="info"]/span[3]/span[2]/a[3]/text()')#主演3

actor4=s.xpath('//*[@id="info"]/span[3]/span[2]/a[4]/text()')#主演4

movie_time=s.xpath('//*[@id="info"]/span[13]/text()')#片长

观察上面的代码,发现获取不同主演时,区别只在于“a[x]”中“x”的值不同。实际上,要一次性获取所有主演信息时,用不加数字的“a”即可获取。

如下:

1

actors = s.xpath('//*[@id="info"]/span[3]/span[2]/a/text()')#所有主演

所以我们修改好的完整代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

import requests

from lxml import etree

import time

url1 = 'https://movie.douban.com/subject/26942674/'

data = requests.get(url1).text

s=etree.HTML(data)

 

film_name=s.xpath('//*[@id="content"]/h1/span[1]/text()')#电影名

director=s.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')#编剧

actor=s.xpath('//*[@id="info"]/span[3]/span[2]/a/text()')#主演

movie_time=s.xpath('//*[@id="info"]/span[13]/text()')#片长

#由于导演有时候不止一个人,所以我这里以列表的形式输出

ds = []

for d in director:

    ds.append(d)

    

#由于演员不止一个人,所以我这里以列表的形式输出

acs = []

for a in actor:

    acs.append(a)

print ('电影名:',film_name)

print ('导演:',ds)

print ('主演:',acs)

print ('片长:',movie_time)

结果输出:

1

2

3

4

5

电影名: ['神秘巨星 Secret Superstar']

导演: ['阿德瓦·香登']

主演: ['塞伊拉·沃西''梅·维贾''阿米尔·汗''拉杰·阿晶''提斯·沙马''卡比尔·谢赫''法如克·贾法尔'

'马努杰·沙玛''莫娜·安伯加卡尔''尼基塔·阿南德''尚''莫纳利·塔库尔']

片长: ['150分钟']

怎么样,是不是很简单啊。赶快去试试吧~~~

这里顺便补充点基础知识:

Requests常用的七种方法:

目前,我们只需要掌握最常用的requests.get()方法就好了。

requests.get()的使用方法

1

2

3

import requests

url = 'https://www.baidu.com'

data = requests.get(url)#使用get方法发送请求,返回汗网页数据的Response并存储到对象data 中

Repsonse对象的属性:

data.status_code:http请求的返回状态,200表示连接成功;

data.text:返回对象的文本内容;

data.content:猜测返回对象的二进制形式;

data.encoding:返回对象的编码方式;

data.apparent_encoding:响应内容编码方式。
最后注意:光理论是不够的。这里顺便免费送大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交流讨教!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

Python实战之如何爬取豆瓣电影?本文教你相关推荐

  1. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  2. python如何爬取豆瓣_Python实战之如何爬取豆瓣电影?本文教你

    爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...

  3. python爬取豆瓣电影并分析_Python实战之如何爬取豆瓣电影?本文教你

    爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...

  4. python3爬取视频原理_Python3爬虫实战:以爬取豆瓣电影为例

    爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...

  5. python爬虫,Scrapy爬取豆瓣电影《芳华》电影短评,分词生成词云图。

    项目github地址:https://github.com/kocor01/scrapy_cloud Python版本为3.6 自己写的简单架构<python爬虫,爬取豆瓣电影<芳华> ...

  6. python爬虫豆瓣电影短评_【Python爬虫】BeautifulSoup爬取豆瓣电影短评

    目的:爬取豆瓣[红海行动]电影的首页短评 步骤: 1.使用BeautifulSoup解析网页 soup = BeautifulSoup(r, 'lxml') // lxml 库解析速度快,也能解析复杂 ...

  7. Python实战之如何爬取猫眼电影排行?本文详解

    本节中,我们利用requests库和正则表达式来抓取猫眼电影TOP100的相关内容.requests比urllib使用更加方便,而且目前我们还没有系统学习HTML解析库,所以这里就选用正则表达式来作为 ...

  8. 2020-爬虫学习-实战练习:爬取豆瓣电影排名前25部的电影信息

    前言: 在开始本文之前,我非常建议先学习下我写的第一篇爬虫练习的文章:https://blog.csdn.net/hahameier/article/details/110558398,里面有涉及到一 ...

  9. Python网络爬虫实战12:爬取豆瓣电影中热门电影数据

    代码实例 # coding:utf8 import json import requests from bs4 import BeautifulSoup import openpyxlwb = ope ...

最新文章

  1. .NET MVC+ EF+LINQ 多表联查VIEW显示列表
  2. php js实现异步图片上传,使用php+js异步上传图片
  3. JDBC为什么要使用PreparedStatement而不是Statement
  4. Direct2D (35) : 通过 DirectWrite 获取字体列表
  5. boost install on prinse 12.04 ubuntu
  6. 图片上传压缩android,android 图片上传压缩常见问题分析
  7. .NET IDE Rider公布2020.2路线图
  8. python-字符串的格式化输出format
  9. Mybatis高级应用 多表关联查询
  10. matlab2c使用c++实现matlab函数系列教程-sum函数
  11. 51单片机8位流水灯左移实现(比较简短)
  12. 学习记录之显示屏语言模块确定,星瞳学习
  13. 读《软件测试经典教程》有感
  14. 【正则】字符串按一定规则做替换
  15. c++ 多边形求交集代码(凸多边形与凸多边形交集)
  16. 从零开始的RISCV架构CPU设计(2)-CISC与RISC
  17. BZOJ.1812.[IOI2005]Riv 河流(树形背包)
  18. 喵呜:C语言实现猜数字游戏
  19. background-size:cover与-webkit-background-size
  20. 完全卸载vscode

热门文章

  1. Kafka 基础梳理
  2. 有关手机电池的10大误区
  3. 买了16刀的虾,哈哈
  4. 零基础学通C语言,福利来啦!!!!zfhl.ke.qq.com
  5. 植物大战僵尸针对金币地址以及基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等
  6. 烫金大理石背景素材!!看起来就很贵!!!
  7. 第六届世界闺蜜文化节暨花都直播孵化基地圆满落幕
  8. 今天的码农女孩做了关于文件操作和文件拖拽的笔记 2022/1/21
  9. 如何在MSN 7.0中显示Winamp或Foorbar中正在播放的曲目名称
  10. 9012年,论数字技术核聚变下打开中台的正确姿势