InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.解決辦法
證書不安全
import urllib3
urllib3.disable_warnings()
使用re正則表達式匹配時的錯誤
File “C:\Python35\lib\re.py”, line 213, in findall
return _compile(pattern, flags).findall(string)
TypeError: cannot use a string pattern on a bytes-like object
出錯的主要原因是因為:
TypeError: can’t use a string pattern on a bytes-like object.
html用decode(‘utf-8’)進行解碼,由bytes變成string。
py3的urlopen返回的不是string是bytes。
Python中append與extend的用法區(qū)別
append整體添加
l1 = [1, 2, 3, 4, 5, ]
l1.append([6, 7, 8, 9, ])
# l1.append(*[6, 7, 8, 9, ]) #會報錯
print(l1)
l1.extend([6, 7, 8, 9])
print(l1)
只能接受一個參數,如果出現打散的情況,還是會被識別成多個參數,因為程序執(zhí)行執(zhí)行是從左到右,從上倒下執(zhí)行的,當出現時這個列表已經被打散了,因而,會被程序識別成被傳入了多個參數
extend逐個添加
l1 = [1, 2, 3, 4, 5, ]
l1.extend([6, 7, 8, 9])
print(l1)
l1.extend('abc')
print(l1)
l1.extend('a') # 也是可迭代對象
print(l1)
# l1.extend(1) # 報錯,不可迭代
print(l1)
# 輸出
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c']
[1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'a']
[1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'a']
extend在執(zhí)行添加的時候,被傳入的參數必須是可迭代對象,這樣通過迭代就解決了同時傳入多個參數的問題,如果你還不知道可迭代對象,放心,你很快就會知道的
BeautifulSoup中的select方法
在寫css時,標簽名不加任何修飾,類名前加點,id名前加 #,我們可以用類似的方法來篩選元素,用到的方法是soup.select(),返回類型是list。
(1).通過標簽名查找
print(soup.select('title'))
# [<title>The Dormouse's story</title>]
print(soup.select('a'))
# [<a class="sister" id="link1"><!-- Elsie --></a>, <a class="sister" id="link2">Lacie</a>, <a class="sister" id="link3">Tillie</a>]
print(soup.select('b'))
# [<b>The Dormouse's story</b>]
(2).通過類名查找
Python爬蟲用select方法提取的標簽的屬性帶有空格的解決方法:
把空格的位置換成 . 就可以了
print soup.select('.sister')
# [<a class="sister" id="link1"><!-- Elsie --></a>, <a class="sister" id="link2">Lacie</a>, <a class="sister" id="link3">Tillie</a>]
(3).通過id名查找
print soup.select('#link1')
#[<a class="sister" id="link1"><!-- Elsie --></a>]
(4).組合查找
組合查找即和寫class文件時,標簽名與類名、id名進行的組合原理是一樣的,例如查找p標簽中,id等于link1的內容,二者需要空格分開。
print soup.select('p #link1')
#[<a class="sister" id="link1"><!-- Elsie --></a>]
直接子標簽查找
print soup.select("head > title")
#[<title>The Dormouse's story</title>]
(5).屬性查找
查找時還可以加入屬性元素,屬性需要用中括號括起來,注意屬性和標簽屬于同一節(jié)點,所以中間不能加空格,否則會無法匹配到。
print soup.select("head > title")
#[<title>The Dormouse's story</title>]
print soup.select('a[)
#[<a class="sister" id="link1"><!-- Elsie --></a>]
屬性仍然可以與上述查找方式組合,不在同一節(jié)點的空格隔開,同一節(jié)點的不加空格。
print soup.select('p a[)
#[<a class="sister" id="link1"><!-- Elsie --></a>]
selenium+python自動化測試之頁面元素定位
通過xpath相對路徑查找元素方法
selenium 操作 獲取動態(tài)頁面數據
Python之excel文件追加內容
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from xlrd import open_workbook
from xlutils.copy import copy
r_xls = open_workbook("test.xls") # 讀取excel文件
row = r_xls.sheets()[0].nrows # 獲取已有的行數
excel = copy(r_xls) # 將xlrd的對象轉化為xlwt的對象
table = excel.get_sheet(0) # 獲取要操作的sheet
#對excel表追加一行內容
table.write(row, 0, '內容1') #括號內分別為行數、列數、內容
table.write(row, 1, '內容2')
table.write(row, 2, '內容3')
excel.save("test.xls") # 保存并覆蓋文件