爬虫基础(二)

爬虫中数据的分类

  1. 结构化数据 :json,xml等
    处理方式:直接转化为python类型

  2. 非结构化数据:html
    处理方式:re 正则表达式,xpath

json模块方法(浏览器切换手机版)

可以根据删除请求的url地址的参数,剃掉不想要的json数据,如:callback
json.dumps 把python类型转化为json字符串
json.loads json字符串数据转化为python类型

with open(“a.txt”,“w”,encoding=“utf-8”) as f:

f.write(json.dumps(ret1,ensure_ascii=False,indent=2))

json.load(fp) 实现包含json的类文件对象和python类型的转化
json.dump(dict,fp) 把python类型存入类文件对象中
fp 类文件对象,具有read或者write方法的对象 # ensure_ascii=False 编码成encoding的形式,indent=2 格式化换行

re模块的常用方法

re.search 找一个
re.match 从头找一个
re.findall(“regex”,“str”) # 返回列表 找所有
re.findall(’\d’, ‘chuan1zhi2’) >>[‘1’, ‘2’]
re.sub(“regex”,"",“str”) #返回字符串 替换
re.sub(’\d’, '
’, ‘chuan1zhi2’) >>[‘chuan_zhi_’]
re.compile(“regex”,re.S) # 编译,提高匹配效率(打包命令)
p = re.compile(’\d’, re.S)
p.findall(‘chuan1zhi2’)
爬虫基础(二)

数据提取之xpath工具

lxml是一款高性能的python html/xml解析器

  1. html与xml的区别
    爬虫基础(二)
  2. xpath选取节点(每个标签是一个节点,标签的嵌套,决定父子节点关系)
    爬虫基础(二)
  3. xpath工具语法
    // 的用途
    //a 当前html页面上的所有的a
    bookstore//book bookstore下的所有的book元素
    @ 的使用
    //a/@href 所有的a的href
    //title[@lang=“eng”] 选择lang=eng的title标签
    text() 的使用
    //a/text() 获取所有的a下的文本
    //a[text()=‘下一页’] 获取文本为下一页的a标签
    a//text() a下的所有的文本
    xpath查找特定的节点
    //a[1] 选择第一个
    //a[last()] 最后一个
    //a[position()<4] 前三个
    包含
    //a[contains(text(),“下一页”)]选择文本包含下一页三个字的a标签
    //a[contains(@class,‘n’)] class包含n的a标签