1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 爬取某电影网站排行榜TOP250

爬取某电影网站排行榜TOP250

时间:2021-04-19 22:40:06

相关推荐

爬取某电影网站排行榜TOP250

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

import requestsimport csvfrom lxml import etreefp = 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.texttree = 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).contentwith 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).contentwith 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)) #写入对应的数据

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。