本篇给出爬虫基础的代码例子,使用 BeautifulSoup,代码改写自参考资料[1]。
from bs4 import BeautifulSoup
from urllib.request import urlopen
# 最简单的情况
html = urlopen("https://mofanpy.com/static/scraping/basic-structure.html").read().decode('utf-8')
print('\n显示网页的代码信息1:\n\n ----------------开始----------------\n', html, '\n\n----------------结束----------------') # 显示网页的代码信息
soup = BeautifulSoup(html, features='lxml') # 把网页放进BeautifulSoup
print('\n获取标签_标题h1_中的内容soup.h1:\n', soup.h1)
print('\n获取标签_段落p_中的内容soup.p:\n', soup.p)
print('\n获取标签_链接a_中的内容soup.a:\n', soup.a)
all_href = soup.find_all('a')
print('\n获取所有"a标签"的内容soup.find_all(‘a’):\n', all_href)
print('\n获取某个字典的值_1:')
for a in all_href:
print(a)
print(a['href'])
all_href = [a['href'] for a in all_href]
print('\n获取某个字典的值_2:\n', all_href, '\n')
# 加入CSS内容
html = urlopen("https://mofanpy.com/static/scraping/list.html").read().decode('utf-8')
print('\n显示网页的代码信息2:\n\n ----------------开始----------------\n', html, '\n\n----------------结束----------------') # 显示网页的代码信息
soup = BeautifulSoup(html, features='lxml') # 把网页放进BeautifulSoup
print('\n利用class筛选出所需要的信息:')
month = soup.find_all('li', {"class": "month"})
print(month, '\n')
print('只显示文本:')
for m in month:
print(m.get_text())
print('\n 多次筛选:')
january = soup.find('ul', {"class": 'jan'})
print(january, '\n')
d_january = january.find_all('li') # use january as a parent
print(d_january, '\n')
for d in d_january:
print(d.get_text())
运行结果:
显示网页的代码信息1:
----------------开始----------------
<!DOCTYPE html><html lang="cn"> <head><meta charset="UTF-8"><title>Scraping tutorial 1 | 莫烦Python</title><link rel="icon" href="/static/img/description/tab_icon.png"></head> <body> <h1>爬虫测试1</h1> <p> 这是一个在 <a href="/">莫烦Python</a> <a href="/tutorials/data-manipulation/scraping/">爬虫教程</a> 中的简单测试. </p> </body> </html>
----------------结束----------------
获取标签_标题h1_中的内容soup.h1:
<h1>爬虫测试1</h1>
获取标签_段落p_中的内容soup.p:
<p> 这是一个在 <a href="/">莫烦Python</a> <a href="/tutorials/data-manipulation/scraping/">爬虫教程</a> 中的简单测试. </p>
获取标签_链接a_中的内容soup.a:
<a href="/">莫烦Python</a>
获取所有"a标签"的内容soup.find_all(‘a’):
[<a href="/">莫烦Python</a>, <a href="/tutorials/data-manipulation/scraping/">爬虫教程</a>]
获取某个字典的值_1:
<a href="/">莫烦Python</a>
/
<a href="/tutorials/data-manipulation/scraping/">爬虫教程</a>
/tutorials/data-manipulation/scraping/
获取某个字典的值_2:
['/', '/tutorials/data-manipulation/scraping/']
显示网页的代码信息2:
----------------开始----------------
<!DOCTYPE html><html lang="cn"> <head><meta charset="UTF-8"><title>爬虫练习 列表 class | 莫烦 Python</title><style>
.jan {
background-color: yellow;
}
.feb {
font-size: 25px;
}
.month {
color: red;
}
</style></head> <body> <h1>列表 爬虫练习</h1> <p>这是一个在 <a href="/">莫烦 Python</a> 的 <a href="/tutorials/data-manipulation/scraping/">爬虫教程</a> 里无敌简单的网页, 所有的 code 让 你一目了然, 清晰无比.</p> <ul> <li class="month">一月</li> <ul class="jan"> <li>一月一号</li> <li>一月二号</li> <li>一月三号</li> </ul> <li class="feb month">二月</li> <li class="month">三月</li> <li class="month">四月</li> <li class="month">五月</li> </ul> </body> </html>
----------------结束----------------
利用class筛选出所需要的信息:
[<li class="month">一月</li>, <li class="feb month">二月</li>, <li class="month">三月</li>, <li class="month">四月</li>, <li class="month">五月</li>]
只显示文本:
一月
二月
三月
四月
五月
多次筛选:
<ul class="jan"> <li>一月一号</li> <li>一月二号</li> <li>一月三号</li> </ul>
[<li>一月一号</li>, <li>一月二号</li>, <li>一月三号</li>]
一月一号
一月二号
一月三号
参考资料:
[1] https://mofanpy.com/tutorials/data-manipulation/scraping/
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】