初学爬虫(二):爬取静态网页之(4)使用requests库进行爬虫实践——获取豆瓣电影TOP250的电影名字全过程详解

news/2024/7/19 11:13:51 标签: python, 爬虫

本实践目的是获取豆瓣电影TOP250的所有电影的名称。
豆瓣电影TOP250网页链接:https://movie.douban.com/top250
在这里插入图片描述

1、分析网站

(1)提取请求头

这里以提取谷歌请求头为例:

①双击打开谷歌:

在这里插入图片描述
②在页面任意位置单击右键 > 选择“检查” > network:
在这里插入图片描述
若network下没有内容就刷新一下界面
③在name框下任意选择一项 > headers > request headers > user-agent
在这里插入图片描述
user-agent后的内容就是谷歌的请求头。

(2)查看网页发现每一页只有25个电影,但是题目要求的是top250的电影名称;

①单击第二页网页链接变为:
https://movie.douban.com/top250?start=25&filter=
②单击第三页网页链接变为:
https://movie.douban.com/top250?start=50&filter=
……
可以发现:每多一页,就是给网页链接的start参数加25。

2、获取网页信息(HTML代码)

(1)使用1中获取的请求头作为爬取网页信息的请求头,即伪装为谷歌请求头。

python">headers = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36'

(2)使用for循环实现翻页

python">for i in range(0,10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25)  #每多一页,就是给网页链接的start参数加25

(3)使用requests.get()函数获取网页内容

python">r = requests.get(link, headers=headers, timeout= 20) #获取网页内容

(4)获取网页信息的完整代码:

python">import requests #导入requests库

def get_movies(): #定义获取函数
    headers = {'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',#伪装为谷歌请求头
    }
    
    for i in range(0,10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25) #每多一页,就是给网页链接的start参数加25
        r = requests.get(link, headers=headers, timeout= 20) #获取网页内容
        print (str(i+1),"页响应状态码:", r.status_code)
        print (r.text)
        
get_movies() #调用函数

在这里插入图片描述

3、使用beautifulsoup解析网页得到最终结果

(1)将2中得到的HTML代码转换为soup对象

python">soup = BeautifulSoup(r.text, "lxml")

(2)使用soup.find()函数得到文章的题目信息

python">div_list = soup.find_all('div', class_='hd')

(3)解析网页完整代码

python">movie_list = []
    for i in range(0,10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25)
        r = requests.get(link, headers=headers, timeout= 20)
        print (str(i+1),"页响应状态码:", r.status_code)
        
        soup = BeautifulSoup(r.text, "lxml")
        div_list = soup.find_all('div', class_='hd')
        for each in div_list:
            movie = each.a.span.text.strip()
            movie_list.append(movie)
    return movie_list

4、实例完整代码:

python">import requests
from bs4 import BeautifulSoup

def get_movies():
    headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',
    'Host': 'movie.douban.com'
    }
    movie_list = []
    for i in range(0,10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25)
        r = requests.get(link, headers=headers, timeout= 20)
        print (str(i+1),"页响应状态码:", r.status_code)

		soup = BeautifulSoup(r.text, "lxml")
        div_list = soup.find_all('div', class_='hd')
        for each in div_list:
            movie = each.a.span.text.strip()
            movie_list.append(movie)
    return movie_list

movies = get_movies()
print (movies)

在这里插入图片描述


http://www.niftyadmin.cn/n/948539.html

相关文章

初学爬虫(三):使用selenium模拟浏览器抓取动态网页之(1)安装selenium库and对selenium库的基本使用

1、安装selenium库 直接使用最简单的pip命令安装: pip install selenium2、selenium库的基本使用 (1)下载geckodriver(Firefox)/chromedriver(Google chrome) 下面以下载geckodriver为例(读者电脑上若还未安装Firefox火狐浏览…

geckodriver的下载、安装与配置

1、下载geckodriver压缩包 链接:https://pan.baidu.com/s/1u8_lFbCWSc3Bux2Win0v-Q 提取码:2677 下载好后的geckodriver压缩包: 2、解压geckodriver 将1中下载好的geckodriver压缩包解压得到exe文件: 3、将2中得到的exe文件…

将新建的虚拟环境导入到jupyter notebook中

1、新建虚拟环境 见博客: python创建虚拟环境(一):使用conda创建虚拟环境 python创建虚拟环境(二):使用终端命令创建虚拟环境 python创建虚拟环境(三):用pyc…

jupyter notebook 使用新环境无法连接,终端报错[W 20:14:43.988 NotebookApp] KernelRestarter: restart failed

jupyter notebook 显示无法连接(无法运行程序): 终端报错: 解决方法如下: 1、在cmd终端输入以下命令激活需要使用的环境: activate 环境名我在这里输入: activate tensorflow1.0可以发现…

tensorflow1.15.0(1.x最新版本)and tensorflow1.15.0-gpu下载与安装详细过程

一、创建虚拟环境 见博客: python创建虚拟环境(一):使用conda创建虚拟环境 python创建虚拟环境(二):使用终端命令创建虚拟环境 python创建虚拟环境(三):用py…

ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问的解决方法

今天使用: pip3 install --upgrade --force-reinstall --no-cache-dir jupyter报错: ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。: ‘d:\anaconda3\lib\site-packages\~mq\backend\cython\constants.cp37-…

ERROR: Cannot uninstall ‘ipython-genutils‘.的解决方法

今天使用: pip3 install --upgrade --force-reinstall --no-cache-dir jupyter报错: ERROR: Cannot uninstall ‘ipython-genutils’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which …

卸载jupyter notebook 重新安装

最近jupyter note book总是出现各种问题,干脆直接重新安装来的简单。 1、彻底卸载jupyter note book 注意: 使用pip uninstall jupyter是卸不掉jupyter的。 需要使用如下命令卸载 jupyter: pip install pip-autoremove pip-autoremove jup…