码迷,mamicode.com
首页 > 其他好文 > 详细

爬虫解析相关

时间:2018-12-03 22:58:33      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:部分   cas   charset   opened   减肥   viewport   iba   doc   tle   

re模块

常用正则表达式符号

.     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
^     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
$     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
*     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为[abb, ab, a]
+     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果[ab, abb]
?     匹配前一个字符1次或0次
{m}   匹配前一个字符m次
{n,m} 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果abb, ab, abb]
|     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果ABC
(...) 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
 
 
\A    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
\Z    匹配字符结尾,同$
\d    匹配数字0-9
\D    匹配非数字
\w    匹配[A-Za-z0-9]
\W    匹配非[A-Za-z0-9]
s     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 \t

常用匹配语法

re.match 从头开始匹配
re.search 匹配包含
re.findall 把所有匹配到的字符放到以列表中的元素返回
re.splitall 以匹配到的字符当做列表分隔符
re.sub      匹配字符并替换

常用匹配模式

re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
M(MULTILINE): 多行模式,改变^$的行为(参见上图)
S(DOTALL): 点任意匹配模式,改变.的行为

BeautifulSoup

技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div class="tang">
        <h3 id="libai">李白</h3>
        <p>有耳莫洗颍川水,有口莫食首阳蕨。</p>
        <p>含光混世贵无名,何用孤高比云月?</p>
        <p>吾观自古贤达人,功成不退皆殒身。</p>
        <p>子胥既弃吴江上,屈原终投湘水滨。</p>
        <p>陆机雄才岂自保?李斯税驾苦不早。</p>
        <p>华亭鹤唳讵可闻?上蔡苍鹰何足道?</p>
        <p>君不见吴中张翰称达生,秋风忽忆江东行。</p>
        <p>且乐生前一杯酒,何须身后千载名?</p>
    </div>
<div>Alex</div>
    <a class="alex" href="$$$$$">链接1</a>
    <a id="wu" href="$$$$$">链接2</a>
    <a class="alex" href="$$$$$">链接3</a>
</body>
</html>
bs4_test.html
技术分享图片
from bs4 import BeautifulSoup as bs

soup = bs(open(bs4_test.html,encoding=utf-8),lxml)
print(soup.h3)

#获取属性
print(soup.h3.attrs)
print(soup.a.attrs[href])
print(soup.a[href])

#获取内容
print(soup.a.text)
print(soup.a.string)
print(soup.a.get_text())
print(soup.h3.text)
print(soup.h3.string)
print(soup.h3.get_text())
print(--------------------)
print(soup.text)
print(--------------------)
print(soup.string)
print(--------------------)

# find
print(soup.find(a,class_=alex))
print(####################)

#findall
print(soup.find_all(a))
print(soup.find_all(a,limit=2))
print(soup.find_all(a,class_=alex))
print(soup.find_all([a,h3]))
print(??????????????????)
print(soup.select(.alex))
print(soup.select(.alex)[1].text)
print(soup.select(a))
print(soup.select(#wu))
print(soup.select(#wu)[0].text)
print(@@@@@@@@@@@@@@@@@@@@@@@)

# 层级选择器
print(soup.select(.tang h3))
# 包含选择器
print(soup.select(.tang > h3))
bs4基本用法
技术分享图片
<h3 id="libai">李白</h3>
{id: libai}
$$$$$
$$$$$
链接1
链接1
链接1
李白
李白
李白
--------------------



Title



李白
有耳莫洗颍川水,有口莫食首阳蕨。
含光混世贵无名,何用孤高比云月?
吾观自古贤达人,功成不退皆殒身。
子胥既弃吴江上,屈原终投湘水滨。
陆机雄才岂自保?李斯税驾苦不早。
华亭鹤唳讵可闻?上蔡苍鹰何足道?
君不见吴中张翰称达生,秋风忽忆江东行。
且乐生前一杯酒,何须身后千载名?

Alex
链接1
链接2
链接3


--------------------
None
--------------------
<a class="alex" href="$$$$$">链接1</a>
####################
[<a class="alex" href="$$$$$">链接1</a>, <a href="$$$$$" id="wu">链接2</a>, <a class="alex" href="$$$$$">链接3</a>]
[<a class="alex" href="$$$$$">链接1</a>, <a href="$$$$$" id="wu">链接2</a>]
[<a class="alex" href="$$$$$">链接1</a>, <a class="alex" href="$$$$$">链接3</a>]
[<h3 id="libai">李白</h3>, <a class="alex" href="$$$$$">链接1</a>, <a href="$$$$$" id="wu">链接2</a>, <a class="alex" href="$$$$$">链接3</a>]
??????????????????
[<a class="alex" href="$$$$$">链接1</a>, <a class="alex" href="$$$$$">链接3</a>]
链接3
[<a class="alex" href="$$$$$">链接1</a>, <a href="$$$$$" id="wu">链接2</a>, <a class="alex" href="$$$$$">链接3</a>]
[<a href="$$$$$" id="wu">链接2</a>]
链接2
@@@@@@@@@@@@@@@@@@@@@@@
[<h3 id="libai">李白</h3>]
[<h3 id="libai">李白</h3>]
输出结果

lxml

技术分享图片
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <title></title>
    </head>
    <body>
        <div class="tang">
            <h3 id="Li">李白</h3>
            <p>云想衣裳花想容,春风拂槛露华浓。</p>
            <p>若非群玉山头见,会向瑶台月下逢。</p>
            <p>独坐敬亭山</p>
            <p>合沓牵数峰,奔地镇平楚。</p>
            <p>中间最高顶,髣髴接天语。</p>
        </div>
        
        <div class="qingZhao">
            <a class="敬亭山" href="#"><h3>[唐] 李白</h3></a>
            <span>李清照(1084年3月13日—约1155年),号易安居士,汉族,齐州济南(今山东省济南市章丘区)人。宋代女词人,婉约词派代表,有“千古第一才女”之称。
            李清照出生于书香门第,早期生活优裕,其父李格非藏书甚富,她小时候就在良好的家庭环境中打下文学基础。出嫁后与夫赵明诚共同致力于书画金石的搜集整理。
            金兵入据中原时,流寓南方,境遇孤苦。所作词,前期多写其悠闲生活,后期多悲叹身世,情调感伤。形式上善用白描手法,自辟途径,语言清丽。论词强调协律,
            崇尚典雅,提出词“别是一家”之说,反对以作诗文之法作词。能诗,留存不多,部分篇章感时咏史,情辞慷慨,与其词风不同。
            有《易安居士文集》《易安词》,已散佚。后人有《漱玉词》辑本。今有《李清照集校注》。</span>
            
            <p>醉花阴·薄雾浓云愁永昼</p>
            <a class="zuihuayin">[宋] 李清照</a>
            <p>薄雾浓云愁永昼。瑞脑消金兽。佳节又重阳,玉枕纱厨,半夜凉初透。东篱把洒黄昏後,有暗香盈袖。莫道不消魂,帘卷西风,人似黄花瘦。</p>
        </div>
        
        <div class="lizhi">
            <a class="zuihuayin">[宋] 李清照</a>
            <p>你的对手在看书</p>
            <p>你的敌人在磨刀</p>
            <p>你的闺蜜在减肥</p>
            <p>隔壁老王在练腰</p>
        </div>
    </body>
</html>
new_file.html
技术分享图片
from lxml import etree

tree = etree.parse(new_file.html)
print(tree)
ret = tree.xpath(//div[@class="tang"]/p/text())
print(ret)
print(ret[0])
ret = tree.xpath(//p)
print(ret)
ret = tree.xpath(//div[@class="qingZhao"]/span/text())
print(ret)
ret = tree.xpath(//h3//text())
print(ret)
ret = tree.xpath(//div[@class="qingZhao"]//@href)
print(ret[0])
xpath基本使用
技术分享图片
<lxml.etree._ElementTree object at 0x0000022CDA5DB788>
[云想衣裳花想容,春风拂槛露华浓。, 若非群玉山头见,会向瑶台月下逢。, 独坐敬亭山, 合沓牵数峰,奔地镇平楚。, 中间最高顶,髣髴接天语。]
云想衣裳花想容,春风拂槛露华浓。
[<Element p at 0x22cda5db7c8>, <Element p at 0x22cda5db808>, <Element p at 0x22cda5db848>, <Element p at 0x22cda5db888>, <Element p at 0x22cda5db8c8>, <Element p at 0x22cda5db948>, <Element p at 0x22cda5db988>, <Element p at 0x22cda5db9c8>, <Element p at 0x22cda5dba08>, <Element p at 0x22cda5db748>, <Element p at 0x22cda5dba48>]
[李清照(1084年3月13日—约1155年),号易安居士,汉族,齐州济南(今山东省济南市章丘区)人。宋代女词人,婉约词派代表,有“千古第一才女”之称。\n\t\t\t李清照出生于书香门第,早期生活优裕,其父李格非藏书甚富,她小时候就在良好的家庭环境中打下文学基础。出嫁后与夫赵明诚共同致力于书画金石的搜集整理。\n\t\t\t金兵入据中原时,流寓南方,境遇孤苦。所作词,前期多写其悠闲生活,后期多悲叹身世,情调感伤。形式上善用白描手法,自辟途径,语言清丽。论词强调协律,\n\t\t\t崇尚典雅,提出词“别是一家”之说,反对以作诗文之法作词。能诗,留存不多,部分篇章感时咏史,情辞慷慨,与其词风不同。\n\t\t\t有《易安居士文集》《易安词》,已散佚。后人有《漱玉词》辑本。今有《李清照集校注》。]
[李白, [唐] 李白]
#
输出结果

爬虫解析相关

标签:部分   cas   charset   opened   减肥   viewport   iba   doc   tle   

原文地址:https://www.cnblogs.com/wusir66/p/10061310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!