自学Python爬虫笔记(day2)

发布时间 2023-04-05 13:51:37作者: Peom`

环境python3.9版本及以上,开发工具pycharm

 

浏览器工具推荐使用Chrome,其他浏览器均有一定程度的阉割。

主要是熟练使用后端界面进行爬取数据。

 

http协议:超文本传输协议

把一条消息分为三大块内容:

  请求:

  1.请求行 --> 请求方式(get/post) 请求URL地址 协议

  2.请求头 --> 放一些服务器要使用的附加信息

  3.请求体 --> 一般放一些请求参数

  响应:

  1.响应行 --> 协议 状态码(200(正常访问)、302(请求重定向)、404(URL错误)、500(服务器错误))

  2.响应头 --> 放一些客户器要使用的附加信息

  3.响应体 --> 服务器返回的真正客户端要用的内容(HTML、json)等

 

requests模块入门:

安装步骤:打开pycharm-->找到下方的terminal终端界面-->输入pip install requests-->等待下载完毕即可使用

若安装速度缓慢,可百度搜索国内源下载,也可直取:

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
阿里云 http://mirrors.aliyun.com/pypi/simple/
豆瓣 http://pypi.douban.com/simple/
一次性使用方式: pip install -i http://pypi.douban.com/simple/ SomePackage 如果提示不信任则用这个: pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com SomePackage 后面再要加参数的话就如这样: pip install -i http://e.pypi.python.org --trusted-host e.pypi.python.org --upgrade pip #--upgrade 升级pip

使用requests模块获取百度源代码:

import requests

# 爬取百度的页面源代码
url = "http://www.baidu.com"
resp = requests.get(url)
resp.encoding = 'utf-8'
print(resp)     # 查看响应状态
print(resp.text)        # 拿到页面源代码

在pycharm中请求访问数据:

import requests

content = input('请输入你要检索的内容:')
url = f'https://www.sogou.com/web?query={content}'

headers = {
    # 添加一个请求头信息,UA
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
}
# 处理一个小小的反爬
resp = requests.get(url, headers=headers)
print(resp.text)

print(resp.request.headers)     # 可以查看到请求头信息

get方式请求参数:

import requests

url = "https://movie.douban.com/j/chart/top_list?type=13"

data = {
    "type": "13",
    "interval_id": "100:90",
    "action": "",
    "start": "0",
    "limit": "20"
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
}

resp = requests.get(url, params=data, headers=headers)
# print(resp.text)      # 返回的是文本字符串
print(resp.json())      # 获取json数据

post方式请求: