爬取某电影网站排行榜TOP250

先把源码放在这里方便有需要的朋友借鉴(该打码已经打码)

import requests
import csv
from lxml import etree

fp = open("films.CSV",'a',newline='',encoding='utf-8-sig')
writer = csv.writer(fp)
writer.writerow(('名称','导演','星级','评价数','链接'))

for i in range(0,10):
    url = f'https://打码.打码.com/top250?start={i*25}&filter='
    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',
    }
    response = requests.get(url = url ,headers = headers)       #模拟浏览器向网站发出Get请求

    # response.encoding = 'UTF-8'

    content = response.text

    tree = etree.HTML(content)      #解析服务器文件


    for page in range(1,25) :
        name = tree.xpath(f'此处打码/ol/li[{page}]/div/div[2]/div[1]/a/span[1]/text()')[0]    #获取电影名称
        # print(name)
        director = tree.xpath(f'此处打码/ol/li[{page}]/div/div[2]/div[2]/p[1]/text()[1]')[0]       #获取导演
        # print(director)
        score = tree.xpath(f'此处打码/ol/li[{page}]/div/div[2]/div[2]/div/span[2]/text()')[0]       #获取星级
        # print(score)
        people = tree.xpath(f'此处打码/ol/li[{page}]/div/div[2]/div[2]/div/span[4]/text()')[0]       #获取评价数
        link = tree.xpath(f'此处打码/ol/li[{page}]/div/div[2]/div[1]/a/@href')[0]       #获取链接
        # print(link)
        writer.writerow((name,director,score,people,link))
        pic = tree.xpath(f'此处打码/ol/li[{page}]/div/div[1]/a/img/@src')[0]       #获取图片
        img_data = requests.get(pic).content
        with open(f'films_pic/{name}.jpg', mode='wb') as f:
            f.write(img_data)
    print(f'第{i}页完成')

注意:1.headers中最好再自行添加Cookie不然爬几次就会被墙掉

           2.保存图片的文件夹要自行创建并放在根目录中


首先我们不着急去想如何爬取整个排行榜,我们从第一页着手

获取url,定制headers

url = f'https://打码.打码.com/top250?start=0&filter='
    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',
    }

查看网页检查,可知该网站需要Get请求

使用requests库,发起Get请求

import requests   #导包

response = requests.get(url = url ,headers = headers)       #模拟浏览器向网站发出Get请求

content = response.text        

取得目标url的源码后,我们就要从中取得我们想要的数据,这个时候我们可以使用Xpath

from lxml import etree    #导包

tree = etree.HTML(content)      #解析服务器文件

然后去定位我们想要的数据

我用的是一个比较懒的方法

在网页上右键我们想要的数据,点击“检查”,就会跳转到源码对应的位置,我们再次右键,找到“Copy”(也就是复制,不知道各位汉化了没有),再点击“Copy Xpath”,这就是我们要的“路径”(可能存在反爬,我遇见的是藏在“路径”中的tbody这个单词,导致爬取数据为空,去掉即可)

name = tree.xpath(f'此处打码/ol/li[1]/div/div[2]/div[1]/a/span[1]/text()')[0]    #获取电影名称

我仅列出了一个例子,其他步骤相同不再重复

接下来是下载图片

 pic = tree.xpath(f'此处打码/ol/li[1]/div/div[1]/a/img/@src')[0]       #获取链接
        img_data = requests.get(pic).content
        with open(f'films_pic/{name}.jpg', mode='wb') as f:
            f.write(img_data)

这个就不做过多解释了

这就是一个电影的爬取

然后通过观察同一页电影的“路径”规律,我们只需要用一个循环爬取一整页的电影,再用循环来爬取。

来到存储数据的环节

存到CSV文件中

import csv    #导包

fp = open("films.CSV",'a',newline='',encoding='utf-8-sig')    #创建并打开

writer = csv.writer(fp)    #写入

writer.writerow(('名称','导演','星级','评价数','链接'))    #写入第一列


writer.writerow((name,director,score,people,link))    #写入对应的数据

哪里有错误,可以私信我,或者在评论区里提出,非常感谢!

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值