spider爬虫基础-第一周的知识点

回顾上周的知识点

1. 网络请求库

1.1 内置urllib库

三个包

urllib.request
urllib.parse
urllib.error

网络请求对象 request库的函数或类

  • urlopen(url|Request, data, timeout)

  • urlretrieve(url, filename)

  • build_opener(*handlers)

  • Request

构造Request类的实例对象(instance)初始化参数(init()方法中使用的)

  • url请求的路径

  • data 上传的数据的字节码

  • headers 请求头

  • method 请求方法

  • timeout 请求超时时间 ??

build_opener()方法中可以创建的请求处理器类

  • HTTPHandler
  • HTTPCookieProcessor(CookieJar())
  • ProxyHandler(proxies={})

它的核心的方法是open(url|Request)

响应HTTPResponse类对象的方法:

  • code 响应状态码
  • headers 响应头
  • get_url() 请求的路径
  • read()/readline()/readlines() 返回字节码

1.2 requests库

第三方请求库, 内部封装了urllib/urllib3的方法或类,创建了更简洁、更好的使用的网络请求。

最核心的方法

  • requests.request(method, url, params, data, json, headers, cookies, proxies, timeout, auth, files, **kwargs)
  • requests.get(url, params, **kwargs)
  • requests.post(url, data, json,**kwargs)
  • requests.put(url, data, json, **kwargs)
  • requests.delete(url, **kwargs)

响应类Response对象的属性与方法

  • status_code 响应码
  • encoding 指定字符集
  • headers
  • cookies
  • text 响应的数据转成文本
  • content 响应的数据字节码

2. 数据解析

正则re模块
lxml模块下xpath  - list[, ]
	- Element的xpath() /.text 文本/.get(属性)
bs4的selector 选择器 - list[ ]
	- find('div')
	- find_all('div')
	- selector_one('')
	- selector('')
	- attrs.get('标签内的属性')
	- .a.b.c['标签的属性']
	- string/text  标签的文本

3. 并发网络请求

多线程之间的通信(queue.Queue)

  • put(item, block, timeout)
  • put_nowait(item)
  • get(timeout)
  • get_nowait()

4. Seleinum库

综合了网络请求、数据解析及动态js渲染功能,提供丰富方法或属性。模拟浏览器,提供Chrome或Firfox等知名浏览器driver驱动程序,来执行浏览器,执行网络请求,在渲染之后,双提供了元素Element提取的方法,让我们快速获取或解析目标内容。

通过这个工具,常用于UI自动化测试、动态js渲染等。

核心的方法

  • get(url)
  • find_element[s]_by_id/name/tag_name/xpath()/css_selector()/class_name()/link_text()
  • send_keys(输入的内容)
  • click() 发起点击事件
  • execute_javascript(‘js脚本’)
  • page_source 渲染之后网页源码
  • save_screenshot(filename) 截屏
  • switch_to.frame/window() 切入到某一个窗口中
  • quit() 退出

5. ElastichSearch搜索引擎的部署及API

你可能感兴趣的:(spider爬虫基础-第一周的知识点)