快捷键:
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标签文本的值,是显示在下拉框的值
全部取消方法

1
select.deselect_all()

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

format()

(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