栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

爬虫 requests User-Agent池 FakeUserAgent URL传参

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬虫 requests User-Agent池 FakeUserAgent URL传参

1.robots协议

        一般协议,不具有强制性

        域名/robots.txt 查看

2.requests模块

        是个第三方模块,需要安装 pip install requests -i https://pypi.doubanio.com/simple

        利用requests模块发送网络请求  接收请求数据

3. 响应体操作

一般用content得到二进制数据,再decode,text能直接得到字符串数据,但是是自动解码,不一定准确

response.text 响应体 str类型
respones.content 响应体 bytes类型
response.status_code 响应状态码
response.request.headers 响应对应的请求头
response.headers 响应头
response.request._cookies 响应对应请求的cookie
response.cookies 响应的cookie(经过了4.set-cookie动作)

4.with open as 语句操作文件读写

 (1)如果得到的字符串数据,用w模式打开,需要设置编码格式encoding='utf-8'(具体编码要看网页所用的编码,在网页检查-elements-head标签下可以看到 

with open('baidu.html','w',encoding="utf-8") as f:
#     f.write(response_.text)
(2)如果以二进制数据写入的话,用wb模式,就不需要设置编码了  (比如图片,音频,视频等)

5.用户代理池(User-Agent池)

(1)使用列表,存放很多个User-Agent的值,然后用random模块的randint随机生成整数索引

(2)使用第三方库  fake-useragent  调用

        pip install fake-useragent -i  https://pypi.doubanio.com/simple

        from fake_useragent import FakeUserAgent

        use_agent_demo=FakeUserAgent().random     

                # 这个random不需要导入random模块,因为FakeUserAgent模块自己导入random了 

       (这个   .random打出来的时候会提示其他命令,不用管,直接输入random)

       (网上的str(UserAgent().random)这个代码亲测失效,应该是升级过了,而且上面的代码返回的就是str,不需要再用str()转换)

(3)如果遇到fake-useragent运行报错

FakeUserAgentError('Maximum amount of retries reached')

1.尝试将如下参数一个一个填入()内:(正常调用时()内为空,不传参)

FakeUserAgent(use_cache_server=False).random

FakeUserAgent(cache=False).random

FakeUserAgent(verify_ssl=False).random

终极方法: ctrl点击FakeUserAgent进入源码> 找到from fake_useragent import settings (第7行),按ctrl点击settings进入源码 > 第16行CACHE_SERVER这里有一个https,把s去掉 > 如果有弹窗,点击OK > 再把s删掉 > 多运行几遍

   6.url传参

URL最好从network里面的headers里面找  

URL里会有干扰数据,凭经验或者一个个删除试

从/s? 后面开始,都是以键值对的形式出现,a=b的形式

如果参数b是中文,实际传参时浏览器会将中文转义,英文不转义,可以直接用转义后的参数做请求

from urllib.parse import quote,unquote

# # 明文(看得发懂的数据) 美食  固定的关系映射表(固定的格式)  >> 密文(看不懂的)   
# data_ = '美食'
# print(quote(data_))    # %E7%BE%8E%E9%A3%9F
# # 密文转为明文
# print(unquote('%E7%BE%8E%E9%A3%9A'))  # '美女'

传参方式1

URL直接传参

input_wd = input('请输入你想搜索的关键字:')
url_ = f'https://www.baidu.com/s?wd={input_wd}'

传参方式2

通过params定义参数,发送请求时再带上参数

params_ = {
    'wd':input_wd
}
response_ = requests.get(url_,headers=headers_,params=params_)   
# 把字典键值对自动拼接到url上面去

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025611.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号