python爬虫5

1.selenium交互

无页面浏览器速度更快

#配置好的自己不用管
from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionschrome_options = Options()chrome_options.add_argument('‐‐headless')chrome_options.add_argument('‐‐disable‐gpu')# path是你自己的chrome浏览器的文件路径path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'chrome_options.binary_location = pathbrowser = webdriver.Chrome(chrome_options=chrome_options)browser.get('http://www.baidu.com/')from selenium import webdriver#这个是浏览器自带的 不需要我们再做额外的操作
#配置的封装from selenium.webdriver.chrome.options import Optionsdef share_browser():#初始化 chrome_options = Options()chrome_options.add_argument('‐‐headless')chrome_options.add_argument('‐‐disable‐gpu')#浏览器的安装路径 打开文件位置#这个路径是你谷歌浏览器的路径path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'chrome_options.binary_location = pathbrowser = webdriver.Chrome(chrome_options=chrome_options)return browser
#封装的调用from handless import share_browserbrowser = share_browser()browser.get('http://www.baidu.com/')browser.save_screenshot('handless1.png') 
#1.练习
from selenium import webdriver
path='C:\\Users\\nsy\\Downloads\\chromedriver-win64\\chromedriver.exe'
browswe=webdriver.Chrome(path)
url='http://www.baidu.com'
browser.get(url)
input=browser.find_element_by_id('su')
#获取标签属性
print(input.get_attribute('class'))
#获取标签名字
print(input.tag_name)
#获取元素文本
a=browser.find(elempent_by_link_text('新闻'))
print(a.text)
#2.练习
from selenium import webdriver
#创建浏览器对象
path='chromedriver.exe'
browser.get(url)
import time
time.sleep(2)
#获取文本框对象
input=browser.find_element_by_id('kw')
#在文本框中输入周杰伦
input.send_keys('周杰伦')
time.sleep(2)
#获取百度一下的按钮
button=browser.find_element_by_id('su')
#点击按钮
button.click()
time.sleep(2)
#滑倒底部
js_bottom='document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)
time.sleep(2)
#获取下一页按钮
next.click()
time.sleep(2)
#退出
browser.quit()
#3.练习hadless selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def share_browser():chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')# path是你自己的chrome浏览器的文件路径path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'chrome_options.binary_location = pathbrowser = webdriver.Chrome(chrome_options=chrome_options)return browser
browser share_browser()
url ='https://www.baidu.com'
browser.get(url)
#1.练习request的使用
url='http://www.baidu.com'
response=requests.get(url=url)
# 一个类型和六个属性
# Response类型
# print(type(response))# 设置响应的编码格式
# response.encoding = 'utf-8'# 以字符串的形式来返回了网页的源码
# print(response.text)# 返回一个url地址
# print(response.url)# 返回的是二进制的数据
# print(response.content)# 返回响应的状态码
# print(response.status_code)
#返回的是响应头
print(response.headers)
#2.request get请求
# urllib
# (1) 一个类型以及六个方法
# (2)get请求
# (3)post请求   百度翻译
# (4)ajax的get请求
# (5)ajax的post请求
# (6)cookie登陆 微博
# (7)代理# requests
# (1)一个类型以及六个属性
# (2)get请求
# (3)post请求
# (4)代理
# (5)cookie  验证码
import requests
url='https://www.baidu.com/s'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
data={'wd':'北京'}
#url 请求资源路径
#params 参数
#kwargs 字典
response=requests.get(url=url,params=data,headers=headers)
content=response.text
print(content)# 总结:
# (1)参数使用params传递
# (2)参数无需urlencode编码
# (3)不需要请求对象的定制
# (4)请求资源路径中的?可以加也可以不加#3.练习
import requests
url='https://fanyi.baidu.com/sug'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
data={'kw':'eye'}
#url请求地址
#data请求参数
#kwargs 字典
response=requests.post(url=url,data=data,headers=headers)
content=response.text
import json
obj=json.loads(content,encoding='utf-8')
print(obj)# 总结:
# (1)post请求 是不需要编解码
# (2)post请求的参数是data
# (3)不需要请求对象的定制
#4.练习
import requests
url='http://www.baidu.com/s?'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
}
data={'wd':'ip'}
proxey={'http':'212.129.251.55:16816'}
response=requests.get(url=url,params=data,headers=headers,proxies=proxy)
content=response.text
with open('daili.html','w',encoding='utf-8')as fp:fp.write(content)#5.练习 超级鹰的使用方法方法封装好了,都是现成的,用户名什么改改就行了,不用管#!/usr/bin/env python
# coding:utf-8import requests
from hashlib import md5class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernamepassword =  password.encode('utf8')self.password = md5(password).hexdigest()self.soft_id = soft_idself.base_params = {'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def PostPic(self, im, codetype):"""im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)files = {'userfile': ('ccc.jpg', im)}r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)return r.json()def ReportError(self, im_id):"""im_id:报错题目的图片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()if __name__ == '__main__':chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001')	#用户中心>>软件ID 生成一个替换 96001im = open('a.jpg', 'rb').read()													#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//print(chaojiying.PostPic(im, 1902))	

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450537.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue不同环境配置不同打包命令

这个需求非常普遍,通常情况我们在开发的时候一般会有三个环境:开发环境、测试环境、生产环境,我们一步步来看下。 vue环境变量是什么? 指的是在不同地方(开发环境、测试环境、生产环境),变量就…

C语言经典面试题——翻转单词顺序VS左旋转字符串

目录 1. 翻转单词顺序1.1 题目描述1.2 解法1.3 完整代码 2. 左旋转字符串2.1 题目描述2.1.1 解法一:2.1.2 解法二:2.1.2.1 strcpy2.1.2.2 strcat2.1.2.3 完整代码 2.1.3 解法三: 1. 翻转单词顺序 1.1 题目描述 输入一个英文句子,…

Docker安装RocketMQ 笔记

RocketMQ架构上主要分为四部分: Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。Consumer:消息消费的角色…

【C++】C++入门— 类与对象初步介绍

C入门 1 认识面向对象2 类的引入3 类的定义类的定义方式 4 类的访问限定符及封装访问限定符封装 Thanks♪(・ω・)ノ谢谢阅读!下一篇文章见!!! 1 认识面向对象 C语言是面向过程的,关注…

浅析Redis③:命令处理之数据返回Client(下)

写在前面 Redis作为我们日常工作中最常使用的缓存数据库,其重要性不言而喻,作为普通开发者,我们在日常开发中使用Redis,主要聚焦于Redis的基层数据结构的命令使用,很少会有人对Redis的内部实现机制进行了解&#xff0c…

109.乐理基础-五线谱-五线谱的附点、休止符、连线、延音线

内容参考于:三分钟音乐社 上一个内容:五线谱的拍号、音符与写法-CSDN博客 上一个内容里练习的答案: 附点:写在符头的右方,附点的作用与简谱一样,延长前面音符本身时值的一半(附点)…

242. Valid Anagram(有效的字母异位词)

问题描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 问题分析 此问题与383. Ransom Note(赎金信)类似,只是字符变为了…

dubbo+sentinel最简集成实例

说明 在集成seata后,下面来集成sentinel进行服务链路追踪管理~ 背景 sample-front网关服务已配置好 集成 一、启动sentinel.jar 1、官网下载 选择1:在本地启动 nohup java -Dserver.port8082 -Dcsp.sentinel.dashboard.serverlocalhost:8082 -Dp…

springcloud bus消息总线

简介 Spring Cloud Bus 配合Spring Cloud Config 使用可以实现配置的动态刷新。 Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。Spring Clud Bus目前支持RabbitMQ和Kafka。 Spring C…

Transformer实战-系列教程1:Transformer算法解读1

🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 Transformer实战-系列教程1:Transformer算法解读1 Transformer实战-系列教程2:Transformer算法解读2 现在最火的AI内容,chatGPT、视觉大模…

2024年【道路运输企业安全生产管理人员】免费试题及道路运输企业安全生产管理人员模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 道路运输企业安全生产管理人员免费试题参考答案及道路运输企业安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及道路运输企业安全生产管理人员操作证已考过的学员汇总,相对有效帮助道路运…

Python||五城P.M.2.5数据分析与可视化_使用华夫图分析各个城市的情况(下)

目录 沈阳市的空气质量 华夫图 柱状图 总结 五城P.M.2.5数据分析与可视化——北京市、上海市、广州市、沈阳市、成都市,使用华夫图和柱状图分析各个城市的情况 沈阳市的空气质量 华夫图 import numpy as np import pandas as pd import matplotlib.pyplot as plt …