专栏首页Golang开发Python爬虫——Beautiful Soup

Python爬虫——Beautiful Soup

Beautiful Soup

Beautiful Soup是Python处理HTML或XML的解析库,使用Beautiful Soup需要安装Beautiful Soup库和lxml的库 Beautiful Soup官方下载地址

image.png

Beautiful Soup的安装方式

pip install beautifulsoup4
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>HelloPython</p>','lxml')
print(soup.p.string)
# HelloPython

获取属性

from bs4 import BeautifulSoup
html = '''
<html>
<head><title>BeautifulSoup Demo</title></head>
<body>
<p class="titleClass" name="titleName">titleContent</p>
</body>
</html>
'''

soup = BeautifulSoup(html,'lxml')
print(soup.p.attrs)
print(soup.p.attrs['name'])

获取内容

string获取节点的文本内容

from bs4 import BeautifulSoup
html = '''
<html>
<head><title>BeautifulSoup Demo</title></head>
<body>
<p class="titleClass" name="titleName">titleContent</p>
</body>
</html>
'''

soup = BeautifulSoup(html,'lxml')
print(soup.p.string)
print(soup.head.string)

find_all

通过节点查找内容

from bs4 import BeautifulSoup
html = '''
<html>
<head><title>BeautifulSoup Demo</title></head>
<body>
<div class='classContent1'>
content0
</div>
<div class='classContent2'>
<li>conent1</li>
<li>conent2</li>
<li>conent3</li>
</div>
</body>
</html>
'''

soup = BeautifulSoup(html,'lxml')
result = soup.find_all('div')
print(result)

通过属性查找

from bs4 import BeautifulSoup
html = '''
<div class='classContent'>
<li>conent1</li>
<li>conent2</li>
<li>conent3</li>
</div>
'''

soup = BeautifulSoup(html,'lxml')
result = soup.find_all(attrs={'class':'classContent'})
print(result)

查找节点内容

from bs4 import BeautifulSoup
import re
html = '''
<div class='classContent'>
<li>conent1</li>
<li>conent2</li>
<li>conent3</li>
</div>
'''

soup = BeautifulSoup(html,'lxml')
result = soup.find_all(text=re.compile('conent'))
print(result)
# ['conent1', 'conent2', 'conent3']

select 选择器

from bs4 import BeautifulSoup
import re
html = '''
<div class='classContent'>
<li>conent1</li>
<li>conent2</li>
<li>conent3</li>
</div>
'''

soup = BeautifulSoup(html,'lxml')
result = soup.select('div li')
print(result)

获取豆瓣读书

from bs4 import BeautifulSoup
import requests
url = 'https://book.douban.com/top250?icn=index-book250-all'
urls = ['https://book.douban.com/top250?start={}'.format(str(n)) for n in range(0,250,25)]

def get_book(url):
    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text,'lxml')
    titles = soup.select('div.pl2 > a')
    imgs = soup.select('a.nbg > img')
    cates = soup.select('p.quote > span')
    for title,img,cate in zip(titles,imgs,cates):
        data = {
            'title':title.get_text(),
            'img':img.get('src'),
            'cate':cate.get_text()
        }
        print(data)

for url_urls in urls:
    get_book(url_urls)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫——XPath

    羊羽shine
  • Java基础——多态Polymorphic

    方法覆写:子类覆写父类的方法,Override 多态: 针对某个类型的方法调用,其真正执行的方法取决于运行时实际类型的方法 对某个类型调用方法,执行的方法...

    羊羽shine
  • Python基础(2)——数据类型

    |运算符|描述| |is|判断两个标识符是否引用自一个对象| |is not |判断连个标识符是否引用不同的对象|

    羊羽shine
  • JavaScript入门

    2看文字样式 T 单击目标文字,菜单栏下面查看文字效果---释放选择:ctrl + enter或选择其他工具

    小闫同学啊
  • 练手爬虫用urllib模块获取

    小小咸鱼YwY
  • ajax实现简单的点击左侧菜单,右侧加载不同网页

    王小婷
  • 常见监控分为哪几类?

    你们之中很多人多多少少都接触过监控,但是你所知道的监控,到底属于哪一类呢?这期我们就从下面这张图开始聊起。如图所示,可以清晰的看出,监控的世界可以被划分为基于 ...

    一猿小讲
  • MAC使用nginx分发80至8080端口

    由于项目本身的原因,开发必须使用80端口实现,而在MAC系统中非Root用户无法直接使用1024以下的端口

    week
  • 大数据技术之_18_大数据离线平台_02_Nginx+Mysql+数据收集+Web 工程 JS/JAVA SDK 讲解+Flume 故障后-如何手动上传 Nginx 日志文件至 HDFS 上

    尖叫提示1:如果出现如下错误,请下载对应依赖包 ./configure: error: C compiler cc is not found ./configu...

    黑泽君
  • 推荐一个markdown格式转html格式的开源JavaScript库

    这个markdown格式转html格式的开源JavaScript库在github上的地址:

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券