应用 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)