PYTHON爬虫基础

一、 搞清楚数据的编码

python3中统一使用Unicode编码,用4字节表示一个字符,而网络中的数据包用utf-8编码,所以需要进行编码转化


PYTHON爬虫基础_第1张图片
编码转化

二、 urllib 模块:处理http请求的模块

专门处理http套接字,可以像处理文件一样处理网页

from urllib import urlopen #ps:关于import和from xxx import xxx
url='xxx'
fhand = urlopen(url).read() #返回句柄

三、beautifulsoup:用这碗美味的汤来解析网页

from bs4 import BeautifulSoup
soup = BeautifulSoup(fhand,'html.parser')

四大对象种类

其中soup是html转化后的树形文档,其每个节点都是python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment

1. Tag
和html原生文档中标签相同

  • name属性获取Tag名称
  • 获取某个标签中内容:soup.xxx
    soup.a
  • 获取某个标签中某个属性: soup.xxx['yyy'] (使用字典)
    soup.p['class']
  • 获取子节点
    way1:使用tag的name属性多次调用
    tag = soup.article.div.ul.li
    way2:使用.contents属性返回该tag下子节点列表
    tag.contents
    way3:使用.children生成器遍历所有子节点
  • 获取父节点
    way1: 使用.parent获取父节点
    way2: 使用.parents 属性遍历所有的父辈节点
tag = soup.article
for p in tag.parents:
    print p.name
  • 获取兄弟节点
    使用.next_sibling .previous_sibling 属性

2. NavigableString
获得标签内的可遍历字符串
soup.p.string

3. BeautifulSoup
BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag

4. Comment
处理html种注释

文档树搜索

  • find(name , attrs , recursive , string , ** kwargs)
    只返回第一个满足条件的元素
  • find_all(name , attrs , recursive , string , ** kwargs)
    指定name搜索:find_all('a')
    指定属性搜索:find_all(class='xxx')

CSS选择器
soup.select('标签名')

参考博文

常用:
find寻找第一个满足条件的情况
find_all返回一个列表
find('xxx',attrs='xxx')如:find('div', class_='result')找到class为result的第一个div

你可能感兴趣的:(PYTHON爬虫基础)