使用python爬取豆瓣电影TOP250
首页 专栏 python 文章详情
0

使用python爬取豆瓣电影TOP250

陈女士 发布于 3 月 9 日

使用python爬取豆瓣电影TOP250
①获取指定界面的html文本信息 板块
②获取排名和链接,名字:因为名字,排名和链接 同在div class='pic'下面 获取属性值的时候直接用 .a.attrs['href'] 非常方便 strip()去除前后的\t\n\f
③获取分数和评价板块 用 select['span'] 返回的是 第二个span 标签内容 xpath 1 就是1
④写入excel模块
⑤整理大的列表
⑥执行:
①获取指定界面的html文本信息 板块

②获取排名和链接,名字:因为名字,排名和链接 同在div class='pic’下面 获取属性值的时候直接用 .a.attrs[‘href’] 非常方便 strip()去除前后的\t\n\f

③获取分数和评价板块 用 select[‘span’] 返回的是 第二个span 标签内容 xpath 1 就是1
注:xpath 和bs4 的返回索引不一样

④写入excel模块

⑤整理大的列表

⑥执行:

具体代码:
import requests
from bs4 import BeautifulSoup
import csv

rank=[]
link=[]
names=[]
score=[]
assess=[]
aList=[]
def getHMLText(url):
try:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
r=requests.get(url,timeout=30,headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text

except Exception as e:

print("产生的异常是",e)  #e.status_code 状态码

def getContent(Html):
soup = BeautifulSoup(Html,"html.parser")
for li in soup.select(".grid_view li"):
for item in li.findall('div',class='pic'):
rank.append(item.text.strip()) #排名
link.append(item.a.attrs['href'])
names.append(item.a.img.attrs['alt'])

def getScoreAndassess(Html):
soup = BeautifulSoup(Html, "html.parser")
for li in soup.select(".grid_view li"):
for info in li.findall('div', class='info'):
for bd in info.findall('div',class='bd'):
score.append(bd.div.select('span')[1].text)
assess.append(bd.div.select('span')[3].text)

print(bd.div.select('span')[3].text)

def saveListCSV(fileName,aList):
try:
with open(fileName,'w',newline='')as fp:
writer = csv.writer(fp)
writer.writerow(["排名", "电影名称", "评分", "评价数","URL"])
for item in aList:
writer.writerow(item)
print('{0}保存成功!共{1}条记录'.format(fileName,len(aList)))
except IOError as err:
print(fileName,'文件创建错误:',err)

def allLsit(aList):
for i in range(len(rank)):
aList.append([rank[i],names[i],score[i],assess[i],link[i]])
return aList

if name=="main":
for i in range(1, 11):
url = "https://www.ozlfax.com" + str((int(i) - 1) * 25) + "&filter="
Html= getHMLText(url)
getContent(Html)
getScoreAndassess(Html)
aList=allLsit(aList)

print(aList)

data=aList[1125:]
saveListCSV('./movie.csv',data)

python
本文系 转载 ,阅读原文
https://blog.csdn.net/lovenankai/article/details/80877279
阅读 35 发布于 3 月 9 日
收藏
分享
avatar
陈女士
1 声望
0 粉丝
关注作者
0 条评论
得票 时间
提交评论
avatar
陈女士
1 声望
0 粉丝
关注作者
宣传栏
目录

使用python爬取豆瓣电影TOP250
①获取指定界面的html文本信息 板块
②获取排名和链接,名字:因为名字,排名和链接 同在div class='pic'下面 获取属性值的时候直接用 .a.attrs['href'] 非常方便 strip()去除前后的\t\n\f
③获取分数和评价板块 用 select['span'] 返回的是 第二个span 标签内容 xpath 1 就是1
④写入excel模块
⑤整理大的列表
⑥执行:
①获取指定界面的html文本信息 板块

②获取排名和链接,名字:因为名字,排名和链接 同在div class='pic’下面 获取属性值的时候直接用 .a.attrs[‘href’] 非常方便 strip()去除前后的\t\n\f

③获取分数和评价板块 用 select[‘span’] 返回的是 第二个span 标签内容 xpath 1 就是1
注:xpath 和bs4 的返回索引不一样

④写入excel模块

⑤整理大的列表

⑥执行:

具体代码:
import requests
from bs4 import BeautifulSoup
import csv

rank=[]
link=[]
names=[]
score=[]
assess=[]
aList=[]
def getHMLText(url):
try:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
r=requests.get(url,timeout=30,headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text

except Exception as e:

print("产生的异常是",e)  #e.status_code 状态码

def getContent(Html):
soup = BeautifulSoup(Html,"html.parser")
for li in soup.select(".grid_view li"):
for item in li.findall('div',class='pic'):
rank.append(item.text.strip()) #排名
link.append(item.a.attrs['href'])
names.append(item.a.img.attrs['alt'])

def getScoreAndassess(Html):
soup = BeautifulSoup(Html, "html.parser")
for li in soup.select(".grid_view li"):
for info in li.findall('div', class='info'):
for bd in info.findall('div',class='bd'):
score.append(bd.div.select('span')[1].text)
assess.append(bd.div.select('span')[3].text)

print(bd.div.select('span')[3].text)

def saveListCSV(fileName,aList):
try:
with open(fileName,'w',newline='')as fp:
writer = csv.writer(fp)
writer.writerow(["排名", "电影名称", "评分", "评价数","URL"])
for item in aList:
writer.writerow(item)
print('{0}保存成功!共{1}条记录'.format(fileName,len(aList)))
except IOError as err:
print(fileName,'文件创建错误:',err)

def allLsit(aList):
for i in range(len(rank)):
aList.append([rank[i],names[i],score[i],assess[i],link[i]])
return aList

if name=="main":
for i in range(1, 11):
url = "https://www.ozlfax.com" + str((int(i) - 1) * 25) + "&filter="
Html= getHMLText(url)
getContent(Html)
getScoreAndassess(Html)
aList=allLsit(aList)

print(aList)

data=aList[1125:]
saveListCSV('./movie.csv',data)