Python爬取豆瓣电影top250

1.准备工作

1.1、安装Python

2.1建立jupyter环境

window+R,输入cmd,进入控制台

pip install jupyter

在这里插入图片描述

3.1进入编辑环境

新建一个文件夹,打开文件夹,进入控制台,输入jupyter notebook,即进入编辑环境。
在这里插入图片描述
进入编辑环境页面
在这里插入图片描述

2.分析网页

2.1 打开豆瓣电影top250网页

在这里插入图片描述

2.2 分析网页结构

查看每一页网页的url,分析它的规律
在这里插入图片描述
可以看出,从第二页开始,URL不同的都是’start='后面这个数,并且基数都为25。则可以分析出第一页为:https://movie.douban.com/top250?start=0&filter=

2.3 用for循环分析结果

也可用for循环来分析,结果如下:

	for page in range(0,226,25):
    print (page)

在这里插入图片描述

2.4 用page函数表示这十页的URL链接

代码如下:

for page in range(0,226,25):
    url= 'https://movie.douban.com/top250?start=%s&filter='%page
    print (url)

结果如下:
在这里插入图片描述

3.爬取网页

3.1 请求HTML源代码

首先,安装requests,(win+R—输入cmd—pip install requests—enter),结果如下:
在这里插入图片描述
请求HTML以第一页为例:

import requests
test_url='https://movie.douban.com/top250?start=0&filter='

注:此处单引号也可以改为双引号,目的是将test_url变为字符串。

3.2 到TOP250上对代码进行审查

右击—检查元素—network—All—刷新,打开如下:
在这里插入图片描述

3.3 请求网页及请求方法

首先点击第一个网址,再点击header,由图中可以知道请求网址及方法:
在这里插入图片描述
代码如下:

import requests
test_url='https://movie.douban.com/top250?start=0&filter='
requests.get(url=test_url)

结果如下:
在这里插入图片描述
若改为:

import requests
test_url='https://movie.douban.com/top250?start=0&filter='
requests.get(url=test_url).text

同样没有返回值。
则是因为浏览器识别出这个语句为爬虫程序,所以拒绝返回值给我们。

3.4 伪装浏览器

伪装浏览器主要是用来躲过浏览器识别,便于成功获取数据。
首先将代码审查中的用户代理复制到请求代码中,用于伪装。
用户代理为:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36

代码表示如下:

import requests
test_url='https://movie.douban.com/top250?start=0&filter='

#设置浏览器代理,它是一个字典
headers={
   
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36'
}
#请求源代码向服务器发出请求
requests.get(url=test_url,headers = headers).text

结果如下:
在这里插入图片描述

4.信息筛选

分析工具有:
xpath,re(正则表达式),BeautifulSoup,即BS4。

4.1 安装lxml库

win+R—输入cmd—pip install lxml—enter),结果如下:
在这里插入图片描述

4.2 过滤

代码如下:

from lxml import etree
    html_etree = etree.HTML(reponse)
     #reponse=requests.get(url=test_url,headers = headers).text
    print ( html_etree)

html_etree可任意命名,HTML必须为大写。
运行结果如下:
在这里插入图片描述

4.3 从网页上提取信息

以泰坦尼克号为例
代码如下:

from lxml import etree
    html_etree = etree.HTML(reponse)
    #reponse=requests.get(url=test_url,headers = headers).text
    
    #过滤
    html_etree.xpath('//*[@id="content"]/div/div[1]/ol/li[6]/div/div[2]/div[1]/a/span[1]/text()'

结果如下:
在这里插入图片描述

4.4 提取整个网页的xpath路径

打开网页—检查—li
如图所示:
在这里插入图片描述
将每一个电影的xpath路径复制下来,可得:
在这里插入图片描述
用语句表达为:

 li = html_etre
  • 23
    点赞
  • 206
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值