爬虫课程笔记01_数据

爬虫课程笔记01_html_02

爬虫课程笔记01_post请求_03

爬虫课程笔记01_数据_04

爬虫课程笔记01_数据_05

 1、第一个爬虫程序

# 爬虫:通过编写程序来获取到互联网上的资源
# 百度
# 需求:用程序模拟浏览器.输入一个网址,从该网址中获取到资源或者内容
# python搞定以上需求
from urllib.request import urlopen

# url = 'http://www.baidu.com'
url = 'https://www.cnblogs.com/liunaixu/'

resp = urlopen(url)

with open("files/bokeyuan.html",mode='w',encoding='utf-8') as f:
f.write(resp.read().decode())

print('over!')

乱码的解决:decode('utf-8')会造成乱码,所以加入encoding='utf-8'才能解决。

2、web请求过程

爬虫课程笔记01_数据_06

  1)服务器渲染:在服务器那边直接把数据和html整合在一起,统一返回给浏览器。 特点:在页面源代码中能看到数据

 

爬虫课程笔记01_post请求_07

2)客户端渲染:第一次请求只要一个html骨架,第二次请求拿到数据.进行数据展示。 特点:在页面源代码中,看不到数据。

爬虫课程笔记01_post请求_08

 3、http协议

爬虫课程笔记01_html_09

 

爬虫课程笔记01_数据_10

爬虫课程笔记01_数据_11

 

爬虫课程笔记01_html_12

 4、requests模块

安装:requests模块

pip install requests

国内网速快的情况下:使用清华源  https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

 5、get请求

# 使用搜狗浏览器搜索明星的get请求

import requests
query = input('请输入一个你喜欢的明星:')

url = f'https://www.sogou.com/web?query={query}'

# url = 'https://www.sogou.com/web?query=%E5%8D%95%E7%94%B0%E8%8A%B3'
dic = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}
resp = requests.get(url,headers=dic) # 处理一个反爬
# resp = requests.get(url) # 处理一个反爬

print(resp)
print(resp.text) # 拿到页面源码

执行结果:

请输入一个你喜欢的明星:周杰伦
<Response [200]>
...var oldQuery="周杰伦",
...
<a href="http://map.sogou.com/#lq=周杰伦"
...
name="query" value="周杰伦"> <input type="hidden"
...
7zOM=_-63072914&htdbg=on">乐坛谁比周杰伦地位高</a>
...
3072914&htdbg=on">周杰伦最好听的10首歌</a>
...

6、post请求

# 使用百度翻译的post请求

import requests

url = 'https://fanyi.baidu.com/sug'
s = input('请输入你要翻译的英文单词:')
dic = {'kw':s}

# 发送post请求,发送的数据必须放在字典中,通过data参数进行传递
resp = requests.post(url,data=dic)

# print(resp.text) # 会出现乱码

# 将服务器返回的内容直接处理成json的dict格式
print(resp.json())
请输入你要翻译的英文单词:dog
{'errno': 0, 'data': [{'k': 'dog', 'v': 'n. 狗; 蹩脚货; 丑女人; 卑鄙小人 v. 困扰; 跟踪'}, {'k': 'DOG', 'v': 'abbr. Data Output Gate 数据输出门'}, {'k': 'doge', 'v': 'n. 共和国总督'}, {'k': 'dogm', 'v': 'abbr. dogmatic 教条的; 独断的; dogmatism 教条主义; dogmatist'}, {'k': 'Dogo', 'v': '[地名] [马里、尼日尔、乍得] 多戈; [地名] [韩国] 道高'}]}

 7、爬虫的步骤

import requests
from time import sleep

# 爬虫:豆瓣网》排行榜》喜剧
# 步骤分解

# 1、地址。
url = 'https://movie.douban.com/j/chart/top_list'
# 2、参数。当url后面跟着的参数很多时,重新封装参数
param = {
'type': '24',
'interval_id': '100:90',
'action': '',
'start': 0,
'limit': 20
}
# 6、修改headers
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
# 3、发送请求。7、添加headers
resp = requests.get(url=url,params=param,headers=headers)

# 输出请求的连接地址,与F12的标头》请求网址一样
# print(resp.request.url)

# 4、爬取结果。如果没有打印出任何结果,情况可能是被反爬了.8、爬取结果
# print(resp.text)

# 5、分析。尝试查看headers,user-agent的结果是'python-requests/2.24.0'
# print(resp.request.headers)
# {'User-Agent': 'python-requests/2.24.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

# 9、json处理
print(resp.json())
# 10、等待5秒后关闭爬取请求
sleep(5)
resp.close()