怎样使用爬虫简单获取猫眼电影专业版的数据

我决定使用requests和BeautifulSoup两个库的功能从猫眼专业版(具体网址:影片总票房排行榜 (maoyan.com))上面获取数据。

  1. 目录

    1.安装requests和BeautifulSoup

    在pycharm的具体安装方法如下:

    BeautifulSoup也是通过这个方法安装的:

    2.关于User-Agent

    3.编写代码


  2. 1.安装requests和BeautifulSoup

  3. tips:requests和BeautifulSoup是Python的扩展库,是需要提前安装的。

在pycharm的具体安装方法如下:

BeautifulSoup也是通过这个方法安装的:

2.关于User-Agent

在很多的网站都会设置反爬虫的功能,一般情况下我们编写的程序发出的请求会被网址拒绝,但浏览器就不会啦。所以我们要将我们编写的程序伪装成浏览器,让网站同意我们的请求。这个时候就要在我们的程序中设置一个User-Agent,将程序发出的请求伪装成浏览器的。

以下是获取User-Agent的方法:

3.编写代码

本人是参考B站的老师讲授的代码【Python爬虫案例】批量爬取电影票房+数据分析可视化_哔哩哔哩_bilibili

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/108.0.0.0 Safari/537.36 Edg/108.0.1462.42"
}               #将程序发出的请求伪装成浏览器
text = requests.get("https://piaofang.maoyan.com/rankings/year",headers=headers).text
                #通过requests请求到电影票房的网页
main_page = BeautifulSoup(text,"html.parser")#后面这个是html的解析器
                #使用BeautifulSoup对text进行解析
div = main_page.find("div",attrs={"id": "ranks-list"})
                #找到名为div且id为ranks-list的所有标签
f = open("MovieData.csv", mode="a")
                #创建一个名为MovieData.csv的文件,放在变量f中,且可以在其后面直接追加文字
uls = div.find_all('ul')
                #找到div元素中所有名为ul的元素,并存储在uls变量中
for ul in uls :                                      #对uls中的元素进行遍历
    lst1 = ul.find_all("li", attrs={"class": "col1"})#找到ul中所有类名为col1的Li元素,并储存在lst1
    lst2 = ul.find_all("li", attrs={"class": "col2"})#找到ul中所有类名为col2的Li元素,并储存在lst2
    lst3 = ul.find_all("li", attrs={"class": "col3"})#找到ul中所有类名为col3的Li元素,并储存在lst3
    lst4 = ul.find_all("li", attrs={"class": "col4"})#找到ul中所有类名为col4的Li元素,并储存在lst4
    for li in lst1 :                                 #对lst1中的元素进行遍历
        ps = li.find_all("p")                        #找到ps中所有p元素,并储存在ps
        for p in ps :                                #对ps中的元素进行遍历
            f.write(p.text.strip())                  #将p标签中的文本去除分隔符后写进f中的文件
            f.write(",")                             #在f文件后面追加,
    for li in lst2:                                  #对lst2中的元素进行遍历
        f.write(li.text.strip())                     #将li标签中的文本去除分隔符后写进f中的文件
        f.write(",")                                 #在f文件后面追加,
    for li in lst3:                                  #对lst3中的元素进行遍历
        f.write(li.text.strip())                     #将li标签中的文本去除分隔符后写进f中的文件
        f.write(",")                                 #在f文件后面追加,
    for li in lst4:                                  #对lst4中的元素进行遍历
        f.write(li.text.strip())                     #将li标签中的文本去除分隔符后写进f中的文件
        f.write(",")                                 #在f文件后面追加,
    f.write("\n")                                    #在f文件后面追加换行符

该文章仅作为本人的学习记录,如有错误,请各位大佬指出。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值