打卡学习Python爬虫第三天|爬取豆瓣电影Top250排行榜(附源码)

一、打开网页找到url

二、查看数据是否存在于网页源代码中

三、编写代码获取网页源代码

1、获取电影名称

注意正则表达式的使用,先观察网页源代码,我们发现每一部电影的数据存放在一个<li></li>中,如上图。并且我们要获取的电影名前后的标签和下面一行的标签相同,如果我们直接使用电影名前后的标签来筛选数据,会出现下面情况:

因此我们需要找到其它的方法区别这两个位置:

re.compile(r'<li>.*?<div class="item">.*?<span class="title">.*?</span>', re.S)

 这时候我们发现没有了刚才的字母,但是出现了其它的内容,这时候我们需要在电影名的位置加上(),并在()中写?P<>,<>中给该位置的数据取一个名字,这就表示只要这个数据:如下第三个.*?

re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<movide>.*?)</span>',re.S)

2、按照同样的方法获取想要的内容

这里获取:电影名,时间,国家,评分,评价人数,短评

爬取的结果:

 添加代码,将数据保存到csv文件中:

 

3、获取新的内容

点击第二页:获取新的url

 

成功获取新内容: 

 4、网页url麻烦,直接修改代码

 代码:

import requests
import re
import csv
"""
爬取豆瓣电影TOP250
"""

# 网页的url
url = "https://movie.douban.com/top250"
params = {
    "start": 50,
    "filter": ""
}
# 响应头,模拟浏览器
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
# 发送请求
response = requests.get(url, params=params,headers=headers)
# 获取网页的html
html = response.text
# 利用正则表达式提取数据
pattern = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<movide>.*?)</span>.*?'
                     r'...<br>(?P<time>.*?)&nbsp;/&nbsp;(?P<guojia>.*?)&nbsp;.*?property="v:average">'
                     r'(?P<sorce>.*?)</span>.*?<span>(?P<number>.*?)人评价.*?'
                     r'<span class="inq">(?P<sixian>.*?)</span>', re.S)

# pattern = re.compile(r'<span class="title">(?P<movide>.*?)</span>', re.S)
results = re.finditer(pattern, html)
f = open("dbTop250.csv", "w", encoding="utf-8")
writer = csv.writer(f)

for result in results:
    print(result.group("movide").strip())
    print(result.group("time").strip())
    print(result.group("guojia").strip())
    print(result.group("sorce").strip())
    print(result.group("number").strip())
    print(result.group("sixian").strip())
    #print(result.group())
    dict = result.groupdict()
    dict['time'] = dict['time'].strip()
    writer.writerow(dict.values())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好皮~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值