爬虫项目:1.豆瓣电影top250电影名

该文介绍如何使用Python的requests和BeautifulSoup库抓取并解析豆瓣电影Top250的电影名称。通过设置User-Agent规避服务器限制,逐页抓取电影列表,过滤掉不需要的标题信息。
摘要由CSDN通过智能技术生成

网址:https://movie.douban.com/top250

导入第三方库requests、beautiful soup

requests用于对服务器发送请求:pip install requests
beautiful soup用于解析网页内容:pip install bs4
下载requests第三方库

1、获取网页html源码

导入相关库

import requests

使用requests方法获取网页,将返回值传到response,并打印出来

url = "https://movie.douban.com/top250"
response = requests.get(url=url)
print(response)

运行结果
状态码为418,服务器拒绝代码请求,用User-Agent伪装为浏览器请求

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43"
}

User-Agent的获取
打开任意网站,右键检查,选择网络刷新,单击任意一个,找到User-Agent复制下来
User-Agent的获取

完整代码

import requests
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43"
}
url = "https://movie.douban.com/top250"
response = requests.get(url=url, headers=headers)
print(response.text)  # 返回链接页面的html网页源码

打印内容的选择

  • response.status_code 打印HTTP返回的状态码(200为访问成功)
  • response.text 返回链接页面的html网页源码

2、解析网页内容

导入解析网页所需库

from bs4 import BeautifulSoup

将网页内容传送到BeautifulSoup中,将解析内容定义一个变量soup存储
因为BeautifulSoup还能解析其他的内容,所以用html.parser指定解析html网页内容

soup = BeautifulSoup(提取出的网页内容, "html.parser")
  • soup.p:打印html里的第一个p元素里的内容,即soup.元素名表示打印出第一个html网页中出现该元素中的内容
  • soup.findAll(“标签名”, attrs={“属性”:“值”}):根据标签,属性等找出符合条件的所有元素内容,attrs为可选参数,该方法会返回一个可迭代对象,通过for循环可以得到所有满足条件的元素(for 变量名 in 该方法赋值的变量名)
html = response.text
soup = BeautifulSoup(html, "html.parser")  # html.parser表示对html类型文件进行解析
all_titles = soup.find_all("span", attrs={"class": "title"})  
for title in all_titles:
    title_string = title.string
    if "/" not in title_string:
       print(title_string)  # 通过if判断语句删除不需要的标题

该代码只能返回前25的电影名,查看网站发现翻页后网址会有变化
https://movie.douban.com/top250?start=25&filter=
利用for循环和字符串格式化

for top_num in range(0, 250, 25):
    url = f"https://movie.douban.com/top250?start={top_num}&filter="

爬取豆瓣电影top250电影名完整代码

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43"
}

for top_num in range(0, 250, 25):
    url = f"https://movie.douban.com/top250?start={top_num}&filter="
    response = requests.get(url=url, headers=headers)
    html = response.text
    soup = BeautifulSoup(html, "html.parser")  # html.parser表示对html类型文件进行解析
    all_titles = soup.find_all("span", attrs={"class": "title"})  # 通过find_all方法获取span元素里的内容,通过attrs= 选择span标签中class为title的内容
    for title in all_titles:
        title_string = title.string
        if "/" not in title_string:
            print(title_string)  # 通过if判断语句删除不需要的标题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值