Python爬虫学习第一天--环境准备
BeautifulSoup
from bs4 import BeautifulSoup
soup=BeautifulSoup(url,'lxml')#lxml解析库速度快,文档容错能力强
soup=BeautifulSoup(url,'xml')
soup=BeautifulSoup(url,'html5lib')
soup.prettify()#自动补全
标签选择器
from bs4 import BeautifulSoup
import lxml
import requests
url='https://movie.douban.com/'
content=requests.get(url).text #以文本形式打印出来
soup=BeautifulSoup(content,'lxml') #利用beautifulsoup解析
print(soup)
print(soup.head)
print(soup.title)
print(soup.p)
print(soup.div)
获取标签属性
soup.p['class']
获取标签内容
soup.title.text
标准选择器
soup.find_all(self, name=None, attrs={}, recursive=True, text=None,limit=None, **kwargs)#以列表返回多个元素
name#Tag标签
attrs#通过字典匹配内容
soup.find(self, name=None, attrs={}, recursive=True, text=None,limit=None, **kwargs)#返回单个元素
CSS选择器
soup.select(self, selector, _candidate_generator=None, limit=None)
selector
选择class 用.表示
选择id 用#表示
获取属性
soup.select('id')
soup.select('class')
获取内容
soup.select('id').get_text()
PyQuery库
pip3 install pyquery#安装PyQuery
from pyquery import PyQuery as pq
dpc=pq('html')
dpc=pq(url='http://www.baidu.com/')
dpc=pq(filename=r'C:/123.txt')
CSS选择器
class ---> .
id ---> #
dpc2=dpc('#head .head_wrapper #lg')
dpc3=dpc2.find("img")
print(dpc3)
遍历元素
dpc4=dpc('#head .head_wrapper #lg').items()#item()方法
for it in dpc4 :
print(dpc4)
获取属性
dpc5=dpc2.find("img").attr('href')
获取标签的文本
dpc6=dpc2.find("img").text(0
dpc6=dpc2.find("img").html(0
DOM操作
dpc2.addClass()#class标签
dpc2.removeClass()
dpc2.attr()#更改属性
dpc2css()
dpc2.find("img").remove()
伪类选择器
dpc2.find("img").('li:frist-child')
selenium库
#自动化测试工具,驱动浏览器,解决JS渲染
pip3 install selenum
from selenium import webdriver
browser=webdriver.Chrome()#声明浏览器对象,需要提供ChromeDriver驱动
browser=webdriver.Firefox()
browser=webdriver.Edge()
browser=webdriver.Safari()
访问页面
browser.get('http://www.baidu.com')
browser.close()#关闭浏览器
查找单个元素
input_f.browser.find_element_by_id('kw')#'kw'关键字需要在网页源代码寻找
browser.fin_element_by_css_selector()
browser.fin_element_by_tag_name()
browser.fin_element_by_xpath('q')
browser.fin_element_by_class_name()
browser.fin_element_by_partial_link_text()
查找多个元素
input_f=browser.find_elements_by_id('kw')#以列表返回结果
元素交互操作
input_f.send_keys('关键字')#在查询框中输入关键字
input_f.clear()
input_f.submit()
input_f.click()
交互动作 将动作附加到动作链中串行执行
from selenium.webdriver improt ActionChains
actions=ActionChains(browser)
actions.drag_and_drop()
actions.clic_and_hold()
执行JavaScript
browser.execute_script('JS代码')#重点掌握的方法
获取元素信息
获取属性
browser.find_element_by_id('kw').get_atrribute('class')
获取文本值
browser.find_element_by_id('kw').text #elemnt单个返回值
获取ID、位置、标签名、大小
browser.find_element_by_id('kw').id
browser.find_element_by_id('kw').location
browser.find_element_by_id('kw').tag_name
browser.find_element_by_id('kw').size
Frame
browser.switch_to.parent_frame()
等待
隐式等待
browser.implicitly_wait(10)#元素未加载完成时会等待一定时间来加载
显示加载
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import exected_conditions
wait=WebDriverWait(browser,10)#声明等待对象
wait.until(exected_conditions.title_is('chenwei'))#Exected_Conditions等待条件
浏览器前进后退
browser.back()
time.sleep(1)
browser.foward()
Cookies
browser.get_cookies()
browser.add_cookie(name)
browser.delete_all_cookies()
选项卡管理
browser.execute_script(window.open)#'JS脚本'
browser.get('https://taobao.com')
print(browser.window_handles)#显示目前选项卡的name
browser.switch_to_window(browser.window_handles[1])#切换至新选项卡
time.sleep(2)
browser.get('http://www.baidu.com')
异常处理
from selenium.common.exception import TimeoutException
try
browser.get('https://taobao.com')
except TimeoutException
print(连接超时)
finally
browser.close()