爬虫笔记 request库 Requests是一常用的http请求库,它使用python语言编写,可以方便地发送http请求,以及方便地处理响应结果。
发送get/post请求 导入库
get请求 不带参数 r = requests.get ('https://www.douban.com/' ) # 豆瓣首页 带一个以字典形式的参数params r = requests.get ('https://www.douban.com/search' , params ={'q' : 'python' , 'cat' : '1001' })
post请求 不带参数 r = requests.post('https://www.douban.com/' ) 带一个以字典形式的参数data r = requests.post('https://www.douban.com/search' , data ={'q' : 'python' , 'cat' : '1001' })
返回值 status_code = r.status_code content = r.text content = r.content r.encoding = "utf-8"
selenium库 爬虫model from selenium.webdriver import Chromefrom selenium.webdriver import ChromeOptionsoption = ChromeOptions() option.add_experimental_option('excludeSwitches' , ['enable-automation' ]) driver = Chrome(options=option) driver.implicitly_wait(1 ) url_1 = "xxx" driver.get(url_1) time.sleep(1 )
强制/显示/隐式等待 强制
显示 from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECelement = WebDriverWait(driver, 10 , 0.5 ).until ( EC.presence_of_element_located((By.ID, "kw" )) )
隐式 driver .implicitly_wait(1 )
浏览器窗口最大化
.text 无法获取文本解决情况 .get_attribute(“innerHTML”) 代替 .text 获得不可见元素
爬虫无法定位元素可能原因是iframe 进入iframe driver.switch_to.frame(driver.find_element('xpath ','/ / iframe [@src ="https://www.btapac.konicaminolta.com/download/driver_PBCN-CN.html" ]') )
爬虫点击方法,稳定程度依次提升
文件上传
input标签节点,直接send_keys
文件路径即可