python爬虫实战:利用beautiful soup爬取猫眼电影TOP100榜单内容-2

最近学习了 html5 相关的网页标签的基础知识,这个对beautiful soup的应用理解有很多的帮助,于是重新整理了之前的代码。

有兴趣的可以参考。

import os
import requests
from bs4 import BeautifulSoup


file_path = 'D:\python3.6\scrapy\maoyan' 
# 定义文件夹,方便后续check文件夹是否存在
file_name = 'maoyan.txt'  
# 自定义文件名称
file = file_path+'\\'+file_name 
# 创建文件全地址,方便后续引用

url = "http://maoyan.com/board/4"
# 获取url的开始页
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}

if os.path.exists(file):
# 如果文件存在,就在程序运行开始头指针开始编辑,即清空原有内容;
# 如果文件不存在,就创建一个新文件
	with open(file, 'w', encoding='utf-8') as f: 
	# 打开目标文件夹中的文件
			f.truncate()
			#清空文件内容,注意:仅当以 "r+" "rb+" "w" "wb" "wb+"等以可写模式打开的文件才可以执行该功能

def get_all_pages(start):
# 自定义获取所有目标pages页的内容的函数
	
	pages=[]
	#定义空列表,加载获取的page内容
	for n in range(0,100,10):
	# 确认offset的步进值,注意把int的n转换为str
	# 遍历所有的url,并获取每一页page的目标内容
		if n==0:
			url=start
		else:
			url=start+'?offset='+str(n)			
		r = requests.get(url, headers=headers) 
		soup = BeautifulSoup(r.content, 'lxml')
		page= soup.find_all(name='dd')	
		# 将取该gage的所有dd节点的内容转换为soup属性		
		pages.extend(page)
		# 利用extend方法扩展pages list内容		
	return pages
	# 返回所有pages list内容
	
text = get_all_pages(url)

for film in text:
# 遍历列表 text中的所有元素,也就是每个dd节点内容
# 这个for循环应该优化成 自定义函数形式;
	dict ={}
	# 创建空dict,用来存放film信息	
	dict['Index']=film.i.string
	# 选取第1个i节点标签的的string值,即film的排行值,并存入字典dict中
	dict['name']=film.a.attrs['title']
	# 选取第1个a节点标签的title属性的名称,即film的名称,并存入字典dict中
	dict['star']=film.find(name='p',attrs={'class': 'star'}).string.strip()
	# 选取第1个节点标签名称为p,且class属性名称为star的string值,并利用strip方法去除文本的前后的空格或者换行,并存入字典dict中

	time=film.find(name='p',attrs={'class': 'releasetime'}).string.strip()
	dict['releasetime']=time[5:15]
	
	# 选取第1个节点标签名称为p,且class属性名称为releasetime的string值,
	# 并利用strip方法去除文本的前后的空格或者换行,并存入字典dict中
	
	
	sco1=film.find(name='i',attrs={'class': 'integer'}).string
	sco2=film.find(name='i',attrs={'class': 'fraction'}).string
	# 选取第1个节点标签名称为i,且class属性名称为integer或者fraction的string值

	dict['score']=sco1+sco2
	# 存入score值
	
	print(dict)
	# 检查dict是否为目标输出内容
	
	with open(file, 'a+', encoding='utf-8') as f: 
	# 以 a+ 方式打开目标file文件,
	# 如果该文件已存在,文件指针将会放在文件的结尾。
	# 文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
		f.write(str(dict)+'\n') 
		# 注意添加 换行符 '\n',实现每个dict自动换行写入txt中
		
print('抓取完毕') 

猫眼电影TOP100榜单中的抓取目标dd节点内容样式参考:

1 霸王别姬

霸王别姬

主演:张国荣,张丰毅,巩俐

上映时间:1993-01-01(中国香港)

9.6

 

你可能感兴趣的:(Python,爬虫,beautiful,soup)