经过前面两次的爬虫实验,爬虫技术已经入门,现在咱们再去爬爬豆瓣,把排名前25的电影爬出来,然后输出到excel中。
豆瓣网址:https://www.douban.com/doulist/240962/?start=0&sort=seq&playable=0&sub_type=
还是一样的过程,我们可以看看我们的要的电影名处在网页的哪一个div中:
打开Chrome检查功能:
可以看到,电影名就在class='title’的div下面的超链接中
好,明确目标之后,咱们就开始吧!
#导入requests组件,如果不知道如何导入,请参考博客后面的问题解决部分
import requests
#从bs4模块中引入BeautifulSoup方法
from bs4 import BeautifulSoup
#导入pandas
import pandas
#通过requests的get方法,我们对该网址发起了一次get请求。最后会自动返回一个response对象,存到res中
res = requests.get('https://www.douban.com/doulist/240962/')
#设置响应包的编码格式为utf-8,如果用默认的ISO,那么就会乱码
res.encoding = 'utf-8'
#利用html解析器,把标签去除,只保留html文本
soup = BeautifulSoup(res.text, 'html.parser')
#爬取所有的电影名
movieList = soup.select('.title a')
movieNum = len(movieList)
print(str.format("豆瓣排名前{0}的电影分别是:", movieNum))
i = 1
#电影的信息保存到字典中
myMoviesDict = {}
for movieName in movieList:
myMoviesDict[str.format("第{0}名", i)] = movieName.text.strip().split(' ')[0]
#print(str.format("第{0}名:{1}", i, movieName.text.strip().split(' ')[0]))
i += 1
del i
print(myMoviesDict)
df = pandas.DataFrame(myMoviesDict, index = [0])
print(df)
#字典输出到excel中去
df.to_excel('news.xlsx')
print('一切正常')
这里用到了pandas,它可以把我们的字典进行表格化,最后格式化输入到Excel中去,是一个很方便的工具。
因此在pycharm中要引入pandas, openpyxl模块
引入方法参考:爬虫入门
看看爬取到的结果:
命令行输出:
Excel的效果:
横着的看起来有点不方便,我们可以利用Excel中的转置,参考
Excel转置
转置后:
效果好多了。