dey3 -Requests
一、Requests基础
requests:是python用来发送http请求的一个第三方库
1.发送请求获取响应
response = requests.get('https://www.baidu.com')
讯享网
2.获取响应内容
1)状态码
讯享网code = response.status_code print(code) if code == 200: print('请求成功') else: print('请求失败')
2)修改返回数据的编码方式(一般针对文本数据乱码的时候) 设的值是网页源代码中charset的值
response.encoding='utf-8'
3)获取响应体(服务器返回的数据)
讯享网"""a.获取文本数据(返回数据是网页源代码)""" data = response.text print(data) """b.获取json数据(返回数据是json格式的数据)""" data = response.json() """c.获取(源数据)二进制数据bytes(如:下载图片,电影,音频...)""" data = response.content
二、Requests应用
给个数据接口
http://api.tianapi.com/txapi/ncovabroad/index?key=c9d408fefd8ed4081a9079d0d6165d43
获取json数据
response = requests('http://api.tianapi.com/txapi/ncovabroad/index?key=c9d408fefd8ed4081a9079d0d6165d43') if response.status_code == 200: data = response.json() for x in data['newslist'] print(f'{x["continents"]}:{x["provinceName"]}') else: print('请求失败')
获取二进制数据
讯享网 url='https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=,&fm=26&gp=0.jpg' response = requests.get(url) if response.status_code == 200: with open('img/0.jpg','wb') as f: f.write(response.content) else: print('请求失败')
三、Requests参数和header
1.爬取知乎网站 --> 请求失败<Response [400]>
url = https://www.zhihu.com/hot response = requests.get(url) if response.status_code == 200: print(response.text) else: print('请求失败') print(response)
加个headers试试
讯享网url = https://www.zhihu.com/hot headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36', 'cookie':'_zap=7cb5f066-c7a7-4caa-81ae-546d1b04f582; _xsrf=2cebe102-78c9-4db0-a1ab-926ca40c56dd; d_c0="AACfjl6ZGxKPTqfKLslQo1EHf9SI1JL4zM0=|"; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=,,; capsion_ticket="2|1:0|10:|14:capsion_ticket|44:N2M0Zjk4MTI1YTc0NGQ5OTlkODhhZjJlZGZhNTVjOWY=|81b7f0161efe859bd7dc791ba8aa8f175da6589c4dc5a7944"; z_c0="2|1:0|10:|4:z_c0|92:Mi4xaW5CWUdRQUFBQUFBQUotT1hwa2JFaWNBQUFDRUFsVk56S25BWHdEb2VFc05XWHFud1doZk85dFJaRXJKZ0MwWG5n|52ca47100a6fc53e99bafe19ef31c36a352d3ad8cadfcb13b3b3aa"; tshl=; SESSIONID=PZyCrfwkuPdH8bsX9hEozOIhDy7o4tnq7fAUxzYpX1M; JOID=UlwdCkM0jSwuJCDQVD0hfVletQxNYNtUbF5Cqz5J2URnHUqnAOactXgoKN1U62oXmzPUJyg1FOkGb6RbtlEuK6g=; osd=VlAQAk8wgSEmKCTcWTUteVVTvQBJbNZcYFpOpjZF3UhqFUajDOuUuXwkJdVY72Yakz_QKyU9GO0KYqxXsl0jI6Q=; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=; KLBRSID=37f2e85292ebb2c2ef70f1d8e39c2b34||; tst=r' } response = requests.get(url,headers=headers) if response.status_code == 200: print(response.text) else: print('请求失败') print(response)
2.街拍
https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D
请求成功 - 但发现拿不到自己想要的数据
url = 'https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D' response = requests.get(url) if response.status_code == 200: print(response.text) else: print('请求失败')
得不到 找到该数据network找到数据接口 — 可以得到自己想要的数据
https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=0&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis×tamp=70&_signature=_02B4Z6wo00f018Dn-EQAAIBA2bkecZ5IBk.A4vzAAK-rszUrYY4o8M7EuB.ZPJeNVACG43R.0KquuzdRqJBN98fGIcNQn5nQ9kaLYpiiamcoedM9CYM6J-gyiXn58PgAWXlxXjOyMmqHDZ6w6a
讯享网url = 'https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=0&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis×tamp=68&_signature=_02B4Z6wo00f01YpNODAAAIBCkxPeBCjmvpWKSDyAAD0OCPaTuMWAMWDgs5Vp1i6Vj9ied5GVd5gfsYbj.lO2wahUOfzu7RDUOglAQZyYj9ZwhHaQcF3X6GkJAtnHl4d6K40ABp.JtWfX3.P-88' response = requests.get(url) if response.status_code == 200: data = response.json() for x in data['data']: with open('files/jie_pai.txt','w',encoding='utf-8') as f: f.write(str(x)) else: print('请求失败') print(response)
3.贝壳 (再来个贝壳吧)
https://cd.fang.ke.com/loupan
for i in range(1,101): url = f'https://cd.fang.ke.com/loupan/pg{i}/' response = requests.get(url) if response.status_code == 200: print(response.text) else: print('失败')
四、Selsenium基础
使用selenium我们先来导入
讯享网from selenium import webdriver
1.创建浏览器对象
b = webdriver.Chrome()
2.在浏览器中加载页面
讯享网b.get('https://www.51job.com/')
3.获取网页的源代码
content = b.page_source print(content)
4.关闭浏览器
讯享网b.close()
五、Selenium页面
首先我们来导入库
from selenium import webdriver from selenium.webdriver.common.keys import Keys
以这个招聘网站为例:https://www.51job.com/
讯享网b = webdriver.Chrome() b.get('https://www.51job.com/ ')
1.获取已经加载的页面中的标签
""" 浏览器对象.find_element_by_id(id值) 浏览器对象.b.find_element_by_css_selector(css选择器) - 获取选择器中的一个标签(第一个),返回值是一个标签对象 浏览器对象.b.find_elements_by_css_selector(css选择器) - 获取选择器中所有标签,返回值是列表,列表中式标签 """ """拿到输入框""" input = b,find_element_by_css_selector('#kwdselectid') """操作标签-输入内容""" input.send_keys('数据分析') # input.send_keys(Keys.ENTER) # 相当于按回车键 """点击按钮""" button = b.find_element_by_css_selector('body > div.content > div > div.fltr.radius_5 > div > button') button.click() # 点击搜索按钮 print(b.page_source) b.close()
可做爬虫的网站清单:地址\爬取方式\header问题
商品信息:
京东: https://www.jd.com/ (requests\selenium)
街拍:https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D (requests\得不到想要的数据)
找数据接口 :https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=0&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis×tamp=70&_signature=_02B4Z6wo00f018Dn-EQAAIBA2bkecZ5IBk.A4vzAAK-rszUrYY4o8M7EuB.ZPJeNVACG43R.0KquuzdRqJBN98fGIcNQn5nQ9kaLYpiiamcoedM9CYM6J-gyiXn58PgAWXlxXjOyMmqHDZ6w6a(requests)
招聘网站
boos:https://www.zhipin.com/chengdu/ (requests)
拉钩:https://www.lagou.com/ (requests)
房地产
贝壳:https://cd.fang.ke.com/loupan(requests)
链家:https://cd.fang.lianjia.com/loupan/ (requests)
蛋壳:https://www.danke.com/room/bj (requests)
瓜子二手车:https://www.guazi.com/cd/ (requests\headers\cookie)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/72053.html