最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

爬取《电影天堂》,保存评分大于7.0 的电影地址

IT圈 admin 0浏览 0评论

爬取《电影天堂》,保存评分大于7.0 的电影地址

临近放假,无心看代码,干脆做点趣味的事情,爬虫找几部电影,打发旅途时间。(头一次,为自己编程^_^)

python爬虫,基本参考  网络爬虫实战:爬取并下载《电影天堂》3千多部动作片电影 这个博主的文章,但是碰到乱码,也是按照该博主的blog提示解决了,然后这里自己加了个过滤评分的。

# 我们用到的库
#大体来自原博客 
import requests
import bs4
import re
import pandas as pddef get_data(url):'''功能:访问 url 的网页,获取网页内容并返回参数:url :目标网页的 url返回:目标网页的 html 内容'''headers = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',}try:r = requests.get(url, headers=headers)r.raise_for_status()#add:canok#下面这个,自动推测网站编码,避免乱码r.encoding = r.apparent_encodingreturn r.textexcept requests.HTTPError as e:print(e)print("HTTPError")except requests.RequestException as e:print(e)except:print("Unknown Error !")def parse_data(html):'''功能:提取 html 页面信息中的关键信息,并整合一个数组并返回参数:html 根据 url 获取到的网页内容返回:存储有 html 中提取出的关键信息的数组'''bsobj = bs4.BeautifulSoup(html,'html.parser')info = []# 获取电影列表tbList = bsobj.find_all('table', attrs = {'class': 'tbspan'})# 对电影列表中的每一部电影单独处理for item in tbList:movie = []link = item.b.find_all('a')[1]# 获取电影的名称name = link["title"]# 获取详情页面的 urlurl = '' + link["href"]try:# 访问电影的详情页面,查找电影下载的磁力链接temp = bs4.BeautifulSoup(get_data(url),'html.parser')tbody = temp.find_all('tbody')score = 0#add: canok  添加评分过滤:score_co = temp.find_all('span')for i in score_co:#print(i)if '评分:' in i:#print('找到评分',i)score = float(i.strong.text)breakif score < 7.0:print('score too low,skip',score,name)continueelse:# 将数据存放到电影信息列表里movie.append(name)movie.append(url)#print(name,url)# 下载链接有多个(也可能没有),这里将所有链接都放进来for i in tbody:download = i.a.textmovie.append(download)#print(download)#print(movie)# 将此电影的信息加入到电影列表中info.append(movie)except Exception as e:print(e)return infodef save_data(data):'''功能:将 data 中的信息输出到文件中/或数据库中。参数:data 将要保存的数据  '''filename = './电影天堂.csv'dataframe = pd.DataFrame(data)dataframe.to_csv(filename,encoding='utf_8_sig', mode='a', index=False, sep=',', header=False)def main():# 循环爬取多页数据for page in range(1, 2):print('正在爬取:第' + str(page) + '页......')       # 根据之前分析的 URL 的组成结构,构造新的 urlif page == 1:index = 'index'else:index = 'index_' + str(page)            url = '/'+ index +'.html'# 依次调用网络请求函数,网页解析函数,数据存储函数,爬取并保存该页数据html = get_data(url)movies = parse_data(html)if movies:save_data(movies)#print(movies)breakprint('第' + str(page) + '页完成!')if __name__ == '__main__':print('爬虫启动成功!')main()print('爬虫执行完毕!')

评分的标签:

上面只抓了3页,过滤小于7.0评分的资源。

爬取《电影天堂》,保存评分大于7.0 的电影地址

临近放假,无心看代码,干脆做点趣味的事情,爬虫找几部电影,打发旅途时间。(头一次,为自己编程^_^)

python爬虫,基本参考  网络爬虫实战:爬取并下载《电影天堂》3千多部动作片电影 这个博主的文章,但是碰到乱码,也是按照该博主的blog提示解决了,然后这里自己加了个过滤评分的。

# 我们用到的库
#大体来自原博客 
import requests
import bs4
import re
import pandas as pddef get_data(url):'''功能:访问 url 的网页,获取网页内容并返回参数:url :目标网页的 url返回:目标网页的 html 内容'''headers = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',}try:r = requests.get(url, headers=headers)r.raise_for_status()#add:canok#下面这个,自动推测网站编码,避免乱码r.encoding = r.apparent_encodingreturn r.textexcept requests.HTTPError as e:print(e)print("HTTPError")except requests.RequestException as e:print(e)except:print("Unknown Error !")def parse_data(html):'''功能:提取 html 页面信息中的关键信息,并整合一个数组并返回参数:html 根据 url 获取到的网页内容返回:存储有 html 中提取出的关键信息的数组'''bsobj = bs4.BeautifulSoup(html,'html.parser')info = []# 获取电影列表tbList = bsobj.find_all('table', attrs = {'class': 'tbspan'})# 对电影列表中的每一部电影单独处理for item in tbList:movie = []link = item.b.find_all('a')[1]# 获取电影的名称name = link["title"]# 获取详情页面的 urlurl = '' + link["href"]try:# 访问电影的详情页面,查找电影下载的磁力链接temp = bs4.BeautifulSoup(get_data(url),'html.parser')tbody = temp.find_all('tbody')score = 0#add: canok  添加评分过滤:score_co = temp.find_all('span')for i in score_co:#print(i)if '评分:' in i:#print('找到评分',i)score = float(i.strong.text)breakif score < 7.0:print('score too low,skip',score,name)continueelse:# 将数据存放到电影信息列表里movie.append(name)movie.append(url)#print(name,url)# 下载链接有多个(也可能没有),这里将所有链接都放进来for i in tbody:download = i.a.textmovie.append(download)#print(download)#print(movie)# 将此电影的信息加入到电影列表中info.append(movie)except Exception as e:print(e)return infodef save_data(data):'''功能:将 data 中的信息输出到文件中/或数据库中。参数:data 将要保存的数据  '''filename = './电影天堂.csv'dataframe = pd.DataFrame(data)dataframe.to_csv(filename,encoding='utf_8_sig', mode='a', index=False, sep=',', header=False)def main():# 循环爬取多页数据for page in range(1, 2):print('正在爬取:第' + str(page) + '页......')       # 根据之前分析的 URL 的组成结构,构造新的 urlif page == 1:index = 'index'else:index = 'index_' + str(page)            url = '/'+ index +'.html'# 依次调用网络请求函数,网页解析函数,数据存储函数,爬取并保存该页数据html = get_data(url)movies = parse_data(html)if movies:save_data(movies)#print(movies)breakprint('第' + str(page) + '页完成!')if __name__ == '__main__':print('爬虫启动成功!')main()print('爬虫执行完毕!')

评分的标签:

上面只抓了3页,过滤小于7.0评分的资源。

发布评论

评论列表 (0)

  1. 暂无评论