首页 > 技术文章 > Python爬虫学习第一天--环境准备

chenxiaoweiworkinghard 2018-07-08 23:43 原文

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()

推荐阅读