python爬虫5

news/2024/10/20 5:21:33/

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.ppmy.cn/news/1342330.html

相关文章

EasyX图形库学习(二、文字输出)

目录 一、文字绘制函数 字体属性结构体:logfont 文字输出 outtextxy 在指定位置输出字符串。 ​编辑 但如果直接使用,可能有以下报错: 三种解决方案: 将一个int类型的分数,输出到图形界面上 如果直接使用: 会把score输入进去根据A…

架构篇32:可扩展架构的基本思想和模式

文章目录 前言可扩展的基本思想可扩展方式小结前言 软件系统与硬件和建筑系统最大的差异在于软件是可扩展的,一个硬件生产出来后就不会再进行改变、一个建筑完工后也不会再改变其整体结构。 例如,一颗 CPU 生产出来后装到一台 PC 机上,不会再返回工厂进行加工以增加新的功…

signalR+websocket:实现消息实时通讯——技能提升

signalR 解决步骤1:npm install microsoft/signalr6.0.6 安装指定版本的microsoft/signalr,我这边安装的版本是6.0.6 解决步骤2:引入import * as signalR from microsoft/signalr; import * as signalR from microsoft/signalr; 下面第三…

会声会影2024破解版如何下载?

要下载会声会影2024,您可以按照以下步骤进行操作: 会声会影2024安装包下载如下: https://wm.makeding.com/iclk/?zoneid55677 1. 访问会声会影官方网站:在您的网络浏览器中,输入"会声会影2024官方网站"进行搜索&…

图论练习4

内容:染色划分,带权并查集,扩展并查集 Arpa’s overnight party and Mehrdad’s silent entering 题目链接 题目大意 个点围成一圈,分为对,对内两点不同染色同时,相邻3个点之间必须有两个点不同染色问构…

【DDD】学习笔记-什么是模型

从领域驱动的战略设计进入战术设计,简单说来,就是跨过系统视角的限界上下文边界进入它的内部,从分层架构的逻辑分层进入到每一层的内部。在思考内部的设计细节时,首先需要思考的问题就是:什么是模型(Model&…

CentOS gui 图形界面显示文字乱码

一、现象 CentOS(CentOS 7.5)控制台下显示中文乱码: 或者通过X11 Forwarding远程显示CentOS的图形化程序文字乱码: 二、解决方法 安装中文语言包: yum install kde-l10n-Chinese 注:网上有些文章会推荐安…

【lesson2】定长内存池的实现

文章目录 介绍定长内存池的设计定长内存池的实现需要成员变量需要的成员函数定长内存池结构定长内存池Delete(释放空间)的实现定长内存池New(申请空间)的实现 定长内存池的实现完整版 介绍 作为程序员(C/C)我们知道申请内存使用的…