python新手代码_Python爬虫新手入门(九)爬虫之Beautifulsoup4实战(爬取豆瓣信息)...

35540db479a97de159e2b4d75e04ed14.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
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

发现是霸王别姬这部电影没有外文名

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

三、保存文件

保存文件这里,咱们使用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

至此,咱们用bs4模块成功爬取了豆瓣信息。其中涉及到了一些数据整理和自动化办公的内容,这部分值得好好琢磨一下。

第一篇:Python入门要点,环境搭建、安装配置、第三方库导入方法详细过程!建议收藏
第二篇:Python爬虫新手入门(一)了解爬虫!
第三篇:Python爬虫新手入门(二)爬虫的请求模块!
第四篇:Python爬虫新手入门(三)爬虫之正则表达式介绍!
第五篇:Python爬虫新手入门(四)爬虫之正则表达式实战(爬取图片)
第六篇:Python爬虫新手入门(五)爬虫之xpath与lxml库的使用!
第七篇:Python爬虫新手入门(六)爬虫之xpath实战(爬取高考分数线信息)
第八篇:Python爬虫新手入门(七)爬虫之Beautifulsoup4介绍(上)
第九篇:Python爬虫新手入门(八)爬虫之Beautifulsoup4介绍(下)

最近在知乎创建了一个新的Python技术圈子,在里面每天都会分享好玩有趣的Python知识,你如果对Python这门技术感兴趣的可以加入哦!交个朋友

Python技术 - 知乎​www.zhihu.com
a8421c409ca9196b61f17bf566bcefbc.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值