使用python爬取豆瓣电影TOP250
Posted 陈女士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python爬取豆瓣电影TOP250相关的知识,希望对你有一定的参考价值。
使用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爬取豆瓣电影TOP250的主要内容,如果未能解决你的问题,请参考以下文章