创建文件
import os
# os.mkdiv(文件名)
os.mkdiv('test')
#创建名为test的文件夹
# os.path.exists(文件名) 判断文件是否存在 返回布尔值
数据接口
有些文件会以接口的形式传入,找到接口之后提取源代码就行。
例如:英雄联盟的的英雄大部分都是接口的形式
url = https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js
将这个获取到的requests.get(url) 将JSON数据转为python的数据源。(大部分是字典)
然后用字典操作数据比较简单
最后写入文件中
selenium的基本步骤
需要下载浏览器驱动
查看自己的浏览器版本:chrome://version/
下载驱动版本和自己浏览器最近的版本号:(国内镜像文件)https://registry.npmmirror.com/binary.html?path=chromedriver/
注意:如果没有自己浏览器的版本号,找与之对应最接近的一个版本号的文件夹,下载对应的系统就行,放在安装python的主环境中。
1.创建浏览器对象(浏览器对象如果是全局变量,浏览器不会自动关闭)
from selenium.webdriver import Chrome
b = Chrome()
2.打开网页(你需要爬的数据在哪个网页里面,就打开哪个网页)
b.get('https://movie.douban.com/top250')
3.获取网页源代码(获取到一定是页面中加载出来的)
有时候网比较卡的时候可以调用time模块中的sleep函数
浏览器对象.page_source
print(b.page_source)
4.关闭浏览器
b.close()
selenium的使用方法
1.输入框输入内容
1)找到输入框
网页对象.find_element_by_id() 虽然是id属性的值,但是不用加#,class属性也不加. 直接写标签名
网页对象.find_element_by_css_selector() 后面接CSS选择器 找到下面的第一个标签
如果element是复数加了s就代表是许多,返回列表
2)输入框输入内容
节点对象.send_keys(输入字符串)(末尾加一个\n可以代表按了一个回车。换行嘛)
2.点击按钮
1)找到需要点击的标签
节点对象.click()
3.切换选项卡
获取需要点击的所有标签:如果拿到标签后需要点击或者输入,必须通过浏览器获取标签
有时候点击一个链接会打开一个新的选项卡
这时候就要切换选项卡
就算点开了新的链接,只要不在原来的网页重新覆盖,创建的浏览器对象就依然是最开始的b= chrome()
切换对象的方法:浏览器对象.switch_to.window(选项卡名)
网页名查找方法:浏览器对象.window_handles 这个数据一般返回一个列表。直接取-1的下标,就是最新打开的选项卡名。 (打印出来不是中文名字,只是一个地址,但是理解成选项卡名会更好理解一点)
此时浏览器对象就换成新打开的,可以对这些进行操作。
最后还是要换回初始浏览器对象在操作其他的链接。
步骤1:关闭新的浏览器对象
步骤2:切换选项卡。 (一般把下标写成0。)
一般selenium的思路步骤:
就和我们人去打开浏览器操作是一样的
打开浏览器(创建浏览器对象)-浏览器输入网页(浏览器对象.get()操作)-选中点击获取输入的标签-send_keys或者选中标签点击click
如果有选项卡,需要切换选项卡 - 浏览器对象.switch_to.window(选项卡名) {选项卡名字,浏览器对象.window_handles[-1]} 返回列表 (此时就切换了浏览器对象在新网页上)
操作完新浏览器对象操作之后,需要关闭浏览器,关闭之后浏览器对象不会发生改变,也要切换回来
selenium操作页面滚动
浏览器对象.execute_script(window.srcollBy(x方向偏移量,y方向偏移量))
滚动之后过几秒在获取数据
cookie的设置
requests:直接在网页需要登录之后,找到对应网页的request Hearders 的cookie的值,复制在Hearder里面
selenium:需要先在浏览器对象里面登录一次,在刷新网页,然后获取cookie值(返回一个列表),result = 浏览器对象.get_cookies() . 将result写入txt文件,(一般将此数据转成json文件写入txt,下次提取就很方便了)
下次打开网页,在将写入的txt文件的cookie读出来(json数据格式的文件),在转为python格式文件。遍历这个列表中每个元素依次加入网页的cookie里面。浏览器对象.add_cookie(‘列表中的各个元素’)
with open('testCookies.txt', encoding='utf-8') as f:
cookies = f.read()
mycookies = json.loads(cookies)
for i in mycookies:
b.add_cookie(i)
代理IP
requests的代理方法
proxies = {
'http': 'http://221.10.105.215:4531',
'https': 'http://221.10.105.215:4531'
}
respones = requests.get('https://www.douban.com',headers=hearders,proxies=proxies)
221.10.105.215:4531 这个就是我找到的代理ip值。文章来源:https://www.toymoban.com/news/detail-400988.html
这样就完成了requests的更换代理ip值文章来源地址https://www.toymoban.com/news/detail-400988.html
到了这里,关于数据接口(json)和selenium的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!