![35540db479a97de159e2b4d75e04ed14.png](https://i-blog.csdnimg.cn/blog_migrate/77ac30ca7b718f33978d9bf68646d0f1.png)
目录:
一、拿到url地址
二、获取豆瓣数据
三、保存文件
前面两章我们介绍了Beautifuisoup4模块的简单使用,今天就用它来爬取豆瓣信息。话不多说,咱们开始吧。
需求: 爬取标题、评分、详情页的地址
在做这些工作之前,需要提前导入好这些库:
import requests
import re
import bs4
from bs4 import BeautifulSoup
from openpyxl import load_workbook # 该模块是用来读写excel文件的
一、拿到url地址
咱们以第一页为例,一共有10页数据,先爬第一页。
url = 'https://movie.douban.com/top250?start=0&filter=
能够发现,start=0,这是第一页。第二页是start=25,每一页url是以25的倍数增长的,依次类推。
这部分代码如下:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}
response = requests.get(url,headers=headers)
response.encoding = 'utf-8'
source = response.text
二、获取豆瓣数据
把网页内容转化成bs4对象。
html_element = BeautifulSoup(source,'lxml')
1.获取电影名称
通过标签,可以找到信息所在的位置,据此写出代码如下:
![51cbe6c40bcefe7d11f8a3908ff0309e.png](https://i-blog.csdnimg.cn/blog_migrate/da4fe02ea646313fb2f3742711f7eb65.jpeg)
movieItemList = html_element.find_all('span', class_='title')
movieItem = [r.string for r in movieItemList]
通过查看列表长度,发现有49个名字,每部电影名称是由中外文名构成,因此理论上应有50个名字,即有一部电影没有外文名。
# 其中有一些空格,把它们替换掉
i = 0
while i <= 48:
movieItem[i] = re.sub('xa0/xa0','',movieItem[i])
i += 1
print(movieItem)
此时得到了25部电影的中文名和24部电影的外文名。结果如下:
![255807d01dd3ccee2c2e3751b7076e34.png](https://i-blog.csdnimg.cn/blog_migrate/42345b3458448c71887e7b8257b19e27.jpeg)
发现是霸王别姬这部电影没有外文名。
2.获取电影别名
代码如下,同样根据标签信息写出:
otherTitle = html_element.find_all('span',class_='other')
otherTitle = [r.string for r in otherTitle]
3.获取电影评分
代码如下:
starList = html_element.find_all('span', class_='rating_num')
star = [r.string for r in starList]
4.获取电影详情链接
发现电影详情链接是类似https://movie.douban.com/subject/1292720这样的形式,根据a标签下的href属性,写出代码如下:
hrefs = html_element.find_all('a', class_= "")
# 总的链接列表
hreflist = [a.attrs['href'] for a in hrefs]
# 得到电影链接列表
link = [re.findall('(https://movie.douban.com/subject/d+)',i) for i in hreflist]
# 删除空列表,取出中括号中的值,去除重复值(最终得到25条链接)
link = [x for x in link if x != []]
link = [h[0] for h in link]
link = list(set(link))
print(link)
结果如下:
![1a0144e4de81cd111c18c5d6b056ae89.png](https://i-blog.csdnimg.cn/blog_migrate/a737359a6470b8aa46503443947008e4.jpeg)
三、保存文件
保存文件这里,咱们使用excel中的xlsx文件。这部分代码如下:
# 创建新的excel表格xlsx文件
from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active
sheet.title = "sheet1"
workbook.save(filename = "豆瓣电影.xlsx")
# 写入数据
workbook = load_workbook('豆瓣电影.xlsx')
sheet=workbook.active
# 给表格赋值
# 表头
data = [["电影名称","评分","详情链接"]]
for row in data:
sheet.append(row)
# 电影名称
k = 0
l = 2
while k <= 48 and l <= 50:
sheet["A{}".format(l)]=movieItem[k]
l += 1
k += 1
# 电影评分
m = 0
l = 2
while m <= 24 and l <= 27:
sheet["B{}".format(l)]=star[m]
l += 1
m += 1
# 电影详情链接
n = 0
l = 2
while n <= 24 and l <= 27:
sheet["C{}".format(l)]=link[n]
l += 1
n += 1
workbook.save('豆瓣电影.xlsx')
执行完以上代码,得到了一个xlsx文件。打开后结果如下:
![985fe36a951fd9f0992243d6ae2e6a19.png](https://i-blog.csdnimg.cn/blog_migrate/0fe8372233914c22bc26e487bb3d81e6.jpeg)
至此,咱们用bs4模块成功爬取了豆瓣信息。其中涉及到了一些数据整理和自动化办公的内容,这部分值得好好琢磨一下。
第一篇:Python入门要点,环境搭建、安装配置、第三方库导入方法详细过程!建议收藏
第二篇:Python爬虫新手入门(一)了解爬虫!
第三篇:Python爬虫新手入门(二)爬虫的请求模块!
第四篇:Python爬虫新手入门(三)爬虫之正则表达式介绍!
第五篇:Python爬虫新手入门(四)爬虫之正则表达式实战(爬取图片)
第六篇:Python爬虫新手入门(五)爬虫之xpath与lxml库的使用!
第七篇:Python爬虫新手入门(六)爬虫之xpath实战(爬取高考分数线信息)
第八篇:Python爬虫新手入门(七)爬虫之Beautifulsoup4介绍(上)
第九篇:Python爬虫新手入门(八)爬虫之Beautifulsoup4介绍(下)
最近在知乎创建了一个新的Python技术圈子,在里面每天都会分享好玩有趣的Python知识,你如果对Python这门技术感兴趣的可以加入哦!交个朋友
Python技术 - 知乎www.zhihu.com![a8421c409ca9196b61f17bf566bcefbc.png](https://i-blog.csdnimg.cn/blog_migrate/5125cfe416336a251da3c476279cbe7e.png)