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的数据源。(大部分是字典)
然后用字典操作数据比较简单
最后写入文件中
查看自己的浏览器版本:chrome://version/
下载驱动版本和自己浏览器最近的版本号:(国内镜像文件)https://registry.npmmirror.com/binary.html?path=chromedriver/
注意:如果没有自己浏览器的版本号,找与之对应最接近的一个版本号的文件夹,下载对应的系统就行,放在安装python的主环境中。
from selenium.webdriver import Chrome
b = Chrome()
b.get('https://movie.douban.com/top250')
有时候网比较卡的时候可以调用time模块中的sleep函数
浏览器对象.page_source
print(b.page_source)
b.close()
1)找到输入框
网页对象.find_element_by_id() 虽然是id属性的值,但是不用加#,class属性也不加. 直接写标签名
网页对象.find_element_by_css_selector() 后面接CSS选择器 找到下面的第一个标签
如果element是复数加了s就代表是许多,返回列表
2)输入框输入内容
节点对象.send_keys(输入字符串)(末尾加一个\n可以代表按了一个回车。换行嘛)
1)找到需要点击的标签
节点对象.click()
有时候点击一个链接会打开一个新的选项卡
就算点开了新的链接,只要不在原来的网页重新覆盖,创建的浏览器对象就依然是最开始的b= chrome()
此时浏览器对象就换成新打开的,可以对这些进行操作。
最后还是要换回初始浏览器对象在操作其他的链接。
步骤1:关闭新的浏览器对象
步骤2:切换选项卡。 (一般把下标写成0。)
打开浏览器(创建浏览器对象)-浏览器输入网页(浏览器对象.get()操作)-选中点击获取输入的标签-send_keys或者选中标签点击click
如果有选项卡,需要切换选项卡 - 浏览器对象.switch_to.window(选项卡名) {选项卡名字,浏览器对象.window_handles[-1]} 返回列表 (此时就切换了浏览器对象在新网页上)
操作完新浏览器对象操作之后,需要关闭浏览器,关闭之后浏览器对象不会发生改变,也要切换回来
浏览器对象.execute_script(window.srcollBy(x方向偏移量,y方向偏移量))
滚动之后过几秒在获取数据
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)
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值。
这样就完成了requests的更换代理ip值