ITPub博客

首页 > 移动开发 > 移动测试 > 使用python爬取豆瓣电影TOP250

使用python爬取豆瓣电影TOP250

移动测试 作者:CAICAICAI 时间:2021-03-11 11:35:00 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.svezta.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)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69996206/viewspace-2762302/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-03-10

  • 博文量
    3
  • 访问量
    1209