2020-10-28-Requests及爬虫清单

2020-10-28-Requests及爬虫清单dey3 Requests 一 Requests 基础 requests 是 python 用来发送 http 请求的一个第三方库 1 发送请求获取响应 response requests get https www baidu com 2 获取响应内容 1 状态码 code

大家好,我是讯享网,很高兴认识大家。
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&timestamp=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&timestamp=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&timestamp=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)

小讯
上一篇 2025-02-22 10:57
下一篇 2025-02-20 10:07

相关推荐

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