这是一个爬取电影票房的案例,主要是通过 中国电影票房 获取电影票房信息,将获得到的内容保存至 .txt 文件。
# 首先我们需要导入 requests 库
import requests
# 导入 BeautifulSoup 库
from bs4 import BeautifulSoup
url = 'http://58921.com/alltime?page='
#网页基本url,需要在后面连接页面号
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400'
}
aulist=[]#存放所有电影信息的二维列表
def movie_get():
#请在下面的 Begin-End 之间按照注释中给出的提示编写正确的代码
####################### begin ###########################
# 通过 for 循环的方式,修改 url 的链接,使得程序可以访问多个页面
# 爬取两个页面的内容,解析出排名、片名、年份,存入aulist列表
for i in range(2):
r = requests.get(url=url+str(i), headers=headers)
r.encoding = 'utf-8'
# 解析 requests 返回的响应结果
soup=BeautifulSoup(r.text,"lxml")
ltr=soup.find_all("tr")#找到所有电影(表格行)
for tr in ltr:
ltd=tr.find_all("td")#找到行内所有单元格
if len(ltd)==0:#如果无内容,访问下一行
continue
sli=[]#初始化一维列表,用来存放一行数据
for i in [1,2,6]:#只提取排名,片名,年份
sli.append(ltd[i].text)#读取单元格内容
aulist.append(sli)#二维列表增加一行
######################## end ############################
#请在下面的 Begin-End 之间按照注释中给出的提示编写正确的代码
def movie_write():
########################begin###########################
#保存到当前目录下的movies.txt文件,
with open('movies.txt','w') as f1:
for x in aulist:
f1.write(x[0]+'|'+x[1]+'|'+x[2]+'\n')
######################## end ###########################
movie_get()
movie_write()
|