快捷键: ctrl+alt+I 对代码进行自动格式规范化
导入模块 例如导入matplotlib 方式: –1 cmd –2 python -m pip install matplotlib
–20201230 导入turtle模块,原本下载之后的turtle放在C:\Python27\ArcGIS10.4\Lib\lib-tk 但,在使用时引用Screen出现错误,因此根据网上教程将C:\Python27\ArcGIS10.4\Lib下面的turtle重命名为myturtle
python不必加分号分行,但也可以不会报错
python的3种注释 1 “#” 2 英文状态下单引号(3个) 3 英文状态下双引号(3个)
###python数据类型 1 python是弱类型,变量没有类型,值才有类型 2 变量不必声明,可直接使用不外传
arcpy的教程 点这里
判断网页是否为静态加载网页 ctrl+u 打开源代码,ctrl+f 打开搜索,可以搜索到结果,可以判定为静态加载 – 发送网络请求 1 url 2 headers(按下f12可获得想要的headers)
1 2 3 headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36"} response = requests.get(url=url,headers = headers) response.text
爬虫相关 [转载](https://mp.weixin.qq.com/s/U85Bnv4-WkSP-14qXBlDWg)
爬虫之Selenium模拟用户操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #!/usr/bin/env python # -*- coding:utf-8 -*- from selenium import webdriver # 要想调用键盘按键操作需要引入keys包 from selenium.webdriver.common.keys import Keys #创建浏览器对象 driver = webdriver.Firefox() driver.get("http://www.baidu.com") #打印页面标题“百度一下你就知道” print driver.title #生成当前页面快照 driver.save_screenshot("baidu.png") # id="kw"是百度搜索框,输入字符串“微博”,跳转到搜索中国页面 driver.find_element_by_id("kw").send_keys(u"微博") # id="su"是百度搜索按钮,click() 是模拟点击 driver.find_element_by_id("su").click() # 获取新的页面快照 driver.save_screenshot(u"微博.png") # 打印网页渲染后的源代码 print driver.page_source # 获取当前页面Cookie print driver.get_cookies() # ctrl+a 全选输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') # ctrl+x 剪切输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') # 输入框重新输入内容 driver.find_element_by_id("kw").send_keys("test") # 模拟Enter回车键 driver.find_element_by_id("su").send_keys(Keys.RETURN) # 清除输入框内容 driver.find_element_by_id("kw").clear() # 生成新的页面快照 driver.save_screenshot("test.png") # 获取当前url print driver.current_url # 关闭当前页面,如果只有一个页面,会关闭浏览器 # driver.close() # 关闭浏览器 driver.quit()
实战:页面操作 假如有下面的网页内容:
1 <input type="text" name="user-name" id="passwd-id" />
1 寻找方法:
1 2 3 4 5 6 7 8 # 获取id标签值 element = driver.find_element_by_id("passwd-id") # 获取name标签值 element = driver.find_element_by_name("user-name") # 获取标签名值 element = driver.find_elements_by_tag_name("input") # 也可以通过XPath来匹配 element = driver.find_element_by_xpath("//input[@id='passwd-id']")
2 定位元素的方法
1 2 3 4 5 6 7 8 find_element_by_id find_elements_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_tag_name find_elements_by_class_name find_elements_by_css_selector
3 鼠标动作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #!/usr/bin/env python # -*- coding:utf-8 -*- from selenium import webdriver # 要想调用键盘按键操作需要引入keys包 from selenium.webdriver.common.keys import Keys from selenium.webdriver import ActionChains #创建浏览器对象 driver = webdriver.Firefox() driver.get("http://www.baidu.com") #鼠标移动到某处 action1 = driver.find_element_by_id("su") ActionChains(driver).move_to_element(action1).perform() #鼠标移动到某处单击 action2 = driver.find_element_by_id("su") ActionChains(driver).move_to_element(action2).click(action2).perform() #鼠标移动到某处双击 action3 = driver.find_element_by_id("su") ActionChains(driver).move_to_element(action3).double_click(action3).perform() # 鼠标移动到某处右击 action4 = driver.find_element_by_id("su") ActionChains(driver).move_to_element(action4).context_click(action4).perform()
4 Select表单 遇到下拉框需要选择操作时,Selenium专门提供了Select类来处理下拉框
1 2 3 4 5 6 7 8 9 10 # 导入 Select 类 from selenium.webdriver.support.ui import Select # 找到 name 的选项卡 select = Select(driver.find_element_by_name('status')) # select.select_by_index(1) select.select_by_value("0") select.select_by_visible_text(u"xxx")
以上是三种选择下拉框的方式,它可以根据索引来选择,可以根据值来选择,可以根据文字来选择。注意: –index 索引从 0 开始 –value是option标签的一个属性值,并不是显示在下拉框中的值 –visible_text是在option标签文本的值,是显示在下拉框的值 全部取消方法
5 弹窗处理 当页面出现了弹窗提示
1 alert = driver.switch_to_alert()
6 页面切换 一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。切换窗口的方法如下:
1 driver.switch_to.window("this is window name")
7 页面前进和后退 操作页面的前进和后退功能
1 2 driver.forward() #前进 driver.back() # 后退
页面级的网络爬虫 —1 requests 库获得一个请求回应 —2 BeautifulSoup 库解析html文件 —3 对解析的soup进行查找:(1)re正则表达式 (2)find_all(“xx”)定位标签内容 —4 对爬取的内容进行操作(字符串的加减)
爬取网页中有用的信息时,通常是对存在于网页中的文本或各种不同标签属性值进行查找 —Beautiful Soup中内置了一些查找方式,最常用的是find()和find_all()函数 —find_all()所得到的所有符合条件的结果都是列表list —find()只返回第一个符合条件的结果,所以find()后面可以直接接.text或者get_text()来或得标签中的文本
find_all —find_all( name , attrs , recursive , string , **kwargs ) —find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件 这些参数相当于过滤器一样可以进行筛选处理,不同的参数过滤可以应用到以下情况: 查找标签,基于name参数 查找文本,基于text参数 基于正则表达式的查找 查找标签的属性,以及基于attrs参数
pip install urllib2 失败问题
操作Excel的python库—xlrd与xlwt –xlrd是用来从Excel中读写数据的,但我们通常只用它进行读操作,写操作会相对于专门的写入模块麻烦一些。其实,后面的rd可以看出是reader的缩写
类比于xlrd的reader,那么xlwt就相对于wtiter,而且很纯正的一点就是它只能对Excel进行写操作
安装与使用 1 2 pip install Xlrd pip install xlwt
(1)对齐 < > ^ 分别表示左对齐(默认),右对齐,居中对齐
1 2 3 4 5 6 >>>print('{0:<20}'.format('python')) >>>print('{0:>20}'.format('python')) >>>print('{0:^20}'.format('python')) python python python
(2)千分分隔符
1 2 >>>print('{:,}'.format(123456789)) 123,456,789
(3)精度 对浮点数来说,精度表示小数部分输出的有效精度 对于字符串,则表示输出的最大长度
1 2 3 4 5 6 >>>print('{0:.2}'.format(0.345)) >>>print('{0:.2f}'.format(12.345)) >>>print('{0:.4}'.format('python') 0.34 12.35 pyth
(4)进制转算
1 2 >>print('{0:b},{0:d},{0:o},{0:x}'.format(324)) 101000100,324,504,144