利用BeautifulSoup爬取豆瓣top250排行榜标题

利用BeautifulSoup爬取标题

整体思想:

  1. 首先导入所需要的库
  2. 声明一个方法 ,将过程包裹起来
  3. 获取网页
  4. 解析网页,找到我们所需要的东西
  5. 保存内容

1.获取随机头部的库方法

from fake_useragent import UserAgent
headers = {'User-Agent':UserAgent().random}
headers

在这里插入图片描述
每次返回的头部都是不一样的。

2.采用request来获取网页

import requests
from fake_useragent import UserAgent
headers = {'User-Agent':UserAgent().random}
link="https://movie.douban.com/top250"
r=requests.get(link,headers=headers,timeout=10)
r.text

在这里插入图片描述

3.用BeautifulSoup来解析网页,提取想要的标签

在这里插入图片描述
当我们查看网页源代码的时候可以发现,我们想要找的电影标题在《div》里面(class=“hd”),下面的《a》里面,最后在《span》里面。

所以可以这样获取内容:

soup=BeautifulSoup(r.text,"lxml")
div_list=soup.find_all("div",class_="hd")
title = div_list.a.span.text

4.保存内容

可以采用创建文件,将内容写入的方式。
如下:

with open("a.txt",'w') as f:
    for i in mi:
        f.write(i)

整体代码

#coding:utf-8
import requests
from bs4 import BeautifulSoup 
from fake_useragent import UserAgent#随机头部库
def get_m():#声明一个方法
    headers = {'User-Agent':UserAgent().random}
    movie_list=[]
    for i in range(0,10):#爬取十页,也可以更多
        link= 'https://movie.douban.com/top250?start={}&filter='.format(i*25)
        #设置超时,如果超过设置的时间,单位 秒
        r=requests.get(link,headers=headers,timeout=10)
        #print(r.status_code) #如果有输出,状态值,说明爬到了信息
        #print(r.text)
        #还要进一步,爬取标题
        soup=BeautifulSoup(r.text,"lxml")
        #因为会取到很多,放到集合
        div_list=soup.find_all("div",class_="hd")
        for each in div_list:# 把div_list 遍历成每个each
            #要进一步取到a标签下的span
            movie=each.a.span.text
            movie_list.append(movie)
        #print(div_list)
    return movie_list

mi=get_m()#调用方法
print(mi)

#保存内容
with open("a.txt",'w') as f:
    for i in mi:
        f.write(i)

在这里插入图片描述
爬取完成!

BeautifulSoup:爬取数据的规则

  • 标签:html中的<,b也叫元素
  • 爬标签 soup.div 爬取了div标签的内容,所有的div
  • soup.div.text 爬到了标签的内容
  • 《div》xx《/div》
  • soup.div.span 通过.来区别级别
  • 爬到了div下的span元素
  • soup find 一般用于爬第一个
  • soup find_all 爬很多的
  • id=”xx” 爬id名为xx区域
  • 从lass_=”xx” 爬class名为xx区域
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎明之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值