# 今日内容
# 1.爬虫原理
# 2.Requests请求库
# 3.抓包分析
# 打开游览器的开发者模式(检查)---选中network
# 找到访问页面后面的xxx.html
# 1.请求url(访问的网站地址)
# 2.请求方式:
# GET:
# 直接发送请求获取数据
#
# POST:
# 需要携待用户信息往目标地址发送请求
# 3.响应状态码
# 2xx:成功
# 3xx:重定向
# 4xx:找不到资源
# 5xx:服务器错误
# 4.请求头像信息
# User-Agent:用户代理(证明是通过电脑设备及游览器发送的请求)
# Cookies:登录用户真实信息(证明你是目标网站的用户)
# Referer:上一次访问的url(证明你是从目标网站跳过来的)
# 5.请求体:
# POST请求才或有请求体
# Form Data
# {
# 'user':'Louis Yang'
# 'pwd':'123456'
# }
# 爬虫全过程
#发送请求(需要请求库:Requests请求库,Slenium请求库)
# 获取响应数据(只要往服务器发送请求,请求通过会返回响应数据)
# 解析并提取数据(需要解析库:re;BeautifulSoup4;Xpath...)
# 保存到本地(文件处理;数据库;MongoDB存储库)
import requests
#导入requests请求库
response=requests.get(url='https://www.baidu.com/')
response.encoding='utf-8'
print(response.text)
with open('baidu.html','w',encoding='utf-8') as f:
f.write(response.text)
附录:爬虫豆瓣电影top250
# 1.发送请求
# 2.解析数据
# 3.保存数据
import requests
import re
# 爬虫三部曲
# .:从当前位置开始
# *:查找所有
# ?:找到第一个不找
# .*?:非贪婪匹配
# .*:贪婪匹配
# (.*?):提取括号内的数据
# 1.发送请求
def get_page(base_url):
response = requests.get(base_url)
return response
# 2.解析文本
def parse_index(text):
res = re.findall('<div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?导演:(.*?)</p>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span>', text, re.S)
# print(res)
return res
# 3.保存数据
def save_data(data):
with open('douban.txt', 'a', encoding='utf-8') as f:
f.write(data)
# main + 回车键
if __name__ == '__main__':
# num = 10
# base_url = 'https://movie.douban.com/top250?start={}&filter='.format(num)
num = 0
for line in range(10):
base_url = f'https://movie.douban.com/top250?start={num}&filter='
num += 25
print(base_url)
# 1.发送请求,调用函数
response = get_page(base_url)
# 2.解析文本
movie_list = parse_index(response.text)
# 3.保存数据
# 数据的格式化
for movie in movie_list:
# print(movie)
# 解压赋值
# 电影排名、电影url、电影名称、导演 - 主演 - 类型、电影评分、评价人数、电影简介
v_top, v_url, v_name, v_daoyan, v_point, v_num, v_desc = movie
# v_top = movie[0]
# v_url = movie[1]
moive_content = f'''
电影排名: {v_top}
电影url: {v_url}
电影名称: {v_name}
导演主演: {v_daoyan}
电影评分: {v_point}
评价人数: {v_num}
电影简介: {v_desc}
\n
'''
print(moive_content)
# 保存数据
save_data(moive_content)
自主学习了查看微信好友列表:
import itchat
itchat.login()
friends = itchat.get_friends(update=True)[0:]
male = female = other = 0
for i in friends[1:]:
sex = i["Sex"]
if sex == 1:
male += 1
elif sex == 2:
female += 1
else:
other += 1
total = len(friends[1:])
print(
'全部好友:%s' %(total) + "\n" +
'女性好友:%s' % (female) + "\n"
)