爬虫02

requests入门

pip install requests

使用request简化代码,且加入请求头进行小反爬

请求方式是get:

# 如果想换关键词搜索而不用每次改代码
import requests
query = input("输入任一关键词:")

url = f'https://www.sogou.com/web?query={query}'  # f string就是把某一个变量塞到字符串中去

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

response = requests.get(url, headers=dic)  # 处理了一个小小的反爬,不带User-Agent会有一个程序自动化的User-Agent跟过去,会被拦截,加上一个请求头headers伪装得更像浏览器

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

response.close()  # 关掉response

爬虫要得知URL 请求方式 参数 就成功一大半了

请求方式是post:

# 请求方式是post
import requests

url = "https://fanyi.baidu.com/sug"

s = input("输入想要翻译的英文单词:")
dat = {
    "kw": s
}

# 发生post请求 发送的数据必须放在字典中,通过data参数进行传递
response = requests.post(url, data=dat)
print(response.json())  # 将服务器返回的内容直接处理成json() 即dict字典
response.close()  # 关掉response

POST请求是Form Data 发送的数据必须放在字典中,通过data参数进行传递


GET请求是Query String Parameters

例:

URL中找问号?,前面的都是地址,?后面是参数

如果发现发送的get请求,参数很长,可以考虑第二种方式封装get请求的参数

例:https://movie.douban.com/j/chart/top_list?type=24&interval_id=100:90&action=&start=0&limit=20

可以把网址中 ?type=24&interval_id=100:90&action=&start=0&limit=20 扔到字典中封装

import requests

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

# 重新封装参数 把Query String Parameters中的一堆扔进来,加入双引号逗号后缩进封装起来
param = {
    "type": "24",
    "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/105.0.0.0 Safari/537.36 Edg/105.0.1343.27"
}

resp = requests.get(url=url, params=param, headers=headers)

print(resp.json())
resp.close()  # 关掉resp

如果爬虫不好使,第一个就去找User-Agent 可以resp.requests.headers直接运行抓出来

爬完人家的数据之后记得response.close() # 关掉response

不关的话访问次数过多容易堵死

posted @ 2022-09-08 16:12  凹尾狸花鱼  阅读(29)  评论(0)    收藏  举报