Python爬虫学习笔记(信息的标记与提取)

信息标记的三种形式:点击链接了解详情

XML:<name></name;,<name />;<!-- -->

Json:”key”:”value”;”key”:[“value1”,”value2”,...];”key”:{“subkey”:”subvalue”,...,...}

Yaml:key:value

  Key:#comment(注释)

-value1

-value2(平行关系)

Key:

Subkey:subvalue

 信息提取的一般方法:

  1. 完整解析信息的标记形式,在提取关键信息;准确但是繁琐
  2. 无视信息标记,直接提取关键信息;快速但是准确性差
  3. 融合方法,结合形势解析和搜索

import requests
from bs4 import BeautifulSoup

r = requests.get("http://python123.io/ws/demo.html")
r.text
demo = r.text
soup = BeautifulSoup(demo,"html.parser")
#信息提取,提取HTML文本中所有的URL
for link in soup.find_all('a'):
    print(link.get('href'))

 

基于bs4库的HTML内容查找方法

<>.find_all(name,attrs,recursive,string,**kwargs):返回一个列表类型,存储查找结果

<tag>(..)等价于<tag>.find_all(..);soup(..)等价于soup .find_all(..)

七个扩展方法:

<>.find():搜索且只返回一个结果,字符串类型,同.find_all()参数

<>.find.parents():在先辈节点中搜索,返回列表类型,同.find_all参数

<>.find.parent():在先辈节点中返回一个结果,字符串类型,同.find_all()参数

<>.find_next_siblings():在后续平行节点中搜索,返回列表类型,同.find_all()参数

<>.find.next_sibling ():在后续平行节点中返回一个结果,字符串类型,同.find_all()参数

<>.find_previous_siblings():在前序平行节点中搜索,返回列表类型,同.find_all()参数

<>.find_previous_sibling():在前序平行节点中返回一个结果,字符串类型,同.find_all()参数

import requests
from bs4 import BeautifulSoup
import re

r = requests.get("http://python123.io/ws/demo.html")
r.text
demo = r.text
soup = BeautifulSoup(demo,"html.parser")
#html内容查找
fa = soup.find_all('a') #查找所有的a标签,以列表的形式存储
fab = soup.find_all(['a','b'])
for tag in soup.find_all(True): #查下找 所有存在的标签
    print(tag.name)
for tag in soup.find_all(re.compile('b')): #查找所有以b开头的标签,使用正则表达式
    print(tag.name)
fbc = soup.find_all('p','course') #查找所有含有course属性值的p标签
fi1 = soup.find_all(id = 'link1') #查找id是link1的标签元素
fas = soup.find_all('a',recursive=False) #从a标签儿子节点层面开始搜索标签,此处为空
fs = soup.find_all(string = "Basic python") #检索当前标签下指定字符串信息
fsp = soup.find_all(string = re.compile("python")) #检索当前标签下所有包含python的字符串域
发布了33 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_33360009/article/details/104054968