格式:历史排名,电影名称,上映时间
# -*- coding: utf-8 -*-
from lxml import html
import requests
import csv
#链接
url='http://58921.com/alltime'
#请求头,模拟浏览器登录
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'}
#访问链接,获取HTML
r=requests.get(url,headers=headers)
#编码
r.encoding='utf-8'
retext=r.text
#HTML解析
ht=html.fromstring(retext)
#使用xpath获取
number=ht.xpath('//*[@id="content"]/div[3]/table/tbody/tr/td[2]/text()')
#print(number)
name=ht.xpath('//*[@id="content"]/div[3]/table/tbody/tr/td[3]/a/text()')
#print(name)
year=ht.xpath('//*[@id="content"]/div[3]/table/tbody/tr/td[7]/text()')
#print(year)
#第一种方法
resultlist=[]
resultlist=list(zip(number,name,year))
print(resultlist)
urllist=['http://58921.com/alltime?page={}'.format(i) for i in range(2)]
#print(urllist)
resultlist1=[['排名','电影名称','上映年份']]
#第二种方法
resultlist=[['排名','电影名称','上映年份']]
#遍历将number,name,year元素放一块
for i in range(0,20):
resultlist.append([number[i],name[i],year[i]])
print(resultlist)
#写入
with open('票房排行榜.csv','w') as f: #写入csv文件
write=csv.writer(f)
write.writerows(resultlist1) #使用第二种遍历换成resultlist
for row in resultlist:
write.writerow(row)
进阶版,爬取前四十,另一种方法
# -*- coding: utf-8 -*-
from lxml import html
import requests
import csv
#获取数据
url='http://58921.com/alltime?page=0'
#请求头,模拟浏览器登录
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39'
}
def getlist(url):
r=requests.get(url)
r.encoding='utf8'
#print(r.text)
#解析操作
ht=html.fromstring(r.text)
number=ht.xpath('//*[@id="content"]/div[3]/table/tbody/tr/td[2]/text()')
#print(number)
name=ht.xpath('//*[@id="content"]/div[3]/table/tbody/tr/td[3]/a/text()')
#print(name)
year=ht.xpath('//*[@id="content"]/div[3]/table/tbody/tr/td[7]/text()')
#print(year)
#[1,长津湖,2021],[2,战狼2,2017]
resultlist=[]
resultlist=list(zip(number,name,year))
print(resultlist)
return(resultlist)
urllist=['http://58921.com/alltime?page={}'.format(i) for i in range(2)]
resultlist1=[['排名','电影名称','电影年份']]
for url in urllist:
resultlist1=resultlist1+getlist(url)
print(resultlist1)
#写入
with open("piaofang.csv",'w') as f:
write=csv.writer(f)
write.writerows(resultlist1)