爬虫豆瓣电影排名(第一页的)

166 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天

爬虫豆瓣电影排名(第一页的)

今天是爬虫豆瓣电影,但是只有第一页的 学习的课程视频链接在这里 2 4 手刃豆瓣top250电影排行(2)_哔哩哔哩_bilibili

有名字,年份,评分,还有评分人数 1.获取电影信息的网页; 
2.找到要评分信息的位置; 
3.复制、保存我们想要的评分数据。

import csv

# 拿到页面源代码  requests
# 通过re来提取想要的有效信息   re
# 导入模块
import requests
import re
# 2.获取豆瓣电影目标网页并解析:

# 豆瓣电影排行榜的网址为:
url = "https://movie.douban.com/top250"
# 首先设置headers,伪装成浏览器 #一些网站会设置一些反爬策略来限制爬取数据,所以就需要让爬虫伪装成浏览器取爬取数据

# 设置url为想爬取的网址

# 然后用requests.get()方法获取页面的text,

# 然后用etree.HTML()来解析下载的页面数据”data“
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.34"
}
resp = requests.get(url, headers=headers)
# print(resp.text)
page_content = resp.text

# 解析数据
obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)'
                 r'</span>.*?<p class="">.*?<br>(?P<year>.*?)&nbsp.*?<span '
                 r'class="rating_num" property="v:average">(?P<score>.*?)</span>.*?'
                 r'<span>(?P<num>.*?)人评价</span>', re.S)
# 开始匹配
result = obj.finditer(page_content)
f = open("data.csv", mode="w")
csvwriter = csv.writer(f)
for it in result:
    # print(it.group("name"))
    # print(it.group("score"))
    # print(it.group("num"))
    # print(it.group("year").strip())
    dic = it.groupdict()
    dic['year'] = dic['year'].strip()
    csvwriter.writerow(dic.values())
f.close()
print("over!")

利用for循环遍历file,然后用.xpath方法连接后半部分的xpath,定位到具体的内容,如果有额外的字符出现还可以用.strip()方法使其去掉,然后把内容存放在变量中。最后在循环内把每次获取到的值输出即可 老师讲的浅显易懂,挺容易明白的 那个headers里需要改一下,电脑不一样user-agent也不一样