38573

Python-爬虫实战 简单爬取豆瓣top250电影保存到本地

<h1 id="爬虫原理">爬虫原理

<ol><li>发送数据</li> <li>获取数据</li> <li>解析数据</li> <li>保存数据</li> </ol><h1 id="requests请求库">requests请求库

res = requests.get(url="目标网站地址")

获取二进制流方法:res.content

获取文本方法:res.text

<h1 id="re正则模块">re正则模块

re.findall("匹配规则","获取到的数据","匹配模式")

re.findall('<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>', response.text, re.S)

贪婪匹配:.*? 过滤任何内容

非贪婪匹配:(.*?) 提供内容

<h1 id="with-open-保存数据">with open() 保存数据

with open(): # wt(write + txt) wb (write + bytes) <h1 id="爬虫精髓">爬虫精髓

<ol><li>分析网站的通信流程</li> <li>分析查找数据从何而来</li> <li>

分析目标网站的反爬策略

</li> <li>

根据目标网站的反爬策略编写攻击手段,获取数据

</li> </ol><h1 id="json格式化">json格式化

json是一种第三方的数据格式

python中可以使用方法将json转换为可读取的数据类型

json.jumps() #将python数据格式转换为json格式 json.loads() #将json格式转换为python数据格式 <h1 id="爬取豆瓣电影排行榜top250">爬取豆瓣电影排行榜top250

#导入requests库 import requests import json #分析豆瓣网站每页数据的url,利用for循环将每页进行 解析数据操作 num = 0 for i in range(10): url = f"https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start={num}&limit=20" num += 20 #获取数据并将获取到的json数据转换为python格式数据类型 w = requests.get(url=url) w = json.loads(w.text) #利用json转换完成后为列表类型,可在上面用print(type())查看类型,利用for循环将列表的每个元素读取,进行索引取值。 for line in w: move_name = line["title"] move_grade = line["rating"][0] move_url = line["url"] move_type = line["types"] move_rank = line["rank"] move_list = f''' 电影名字:{move_name} 电影分数:{move_grade} 电影链接:{move_url} 电影类型:{move_type} 电影排行:{move_rank} ''' #保存数据 with open("douban2.txt","a",encoding="utf8") as f: f.write(move_list + "\n")

来源:博客园

作者:Jack-秦

链接:https://www.cnblogs.com/qinyujie/p/11425979.html

Recommend