在学习日历2中的爬名
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
print soup.find_all('a')[0].text
print soup.find_all('a')[1].text
print soup.find_all('a')[2].text
目的虽然是达到了,但是如果有成百上千的名字,那我们该怎么爬了,循环?还是判断,在这时,select就该出现了
select可以通过筛选标签来挑选出我们需要的资料
例如上面的语句,我们可以从soup中挑选出 a 标签 也就是原HTML文中的网址,名字的标签
for item in soup.select('a'):
print item.
显然,我只需要给他一个text,就可以把文本提取出来
select是一个强大的代码,不仅仅可以用于这种情况
比如我们要爬新闻,爬文章都是可以用select的代码的
接下来,就是见证奇迹的时候:
算了,一会再见证奇迹吧,哈哈
网页编码的查看,用F12开发者工具虽然可以实现,不过有时候要从成百上千的html代码中查找标签就不是那么方便了
我需要引进一个google浏览器应用扩展:SelectorGadget,这款应用扩展可以迅速找出网页中我们需要的资料的标签
我准备去爬网易新闻:
打开SelectorGadget,点击标题,标题变成绿色。和他同标签的标题会变成黄色。SelectorGadget中会出现标签名字
当用select遍历出来的都是绿色和黄色的,因为是搜索标签和同等标签
import requests
from bs4 import BeautifulSoup
res = requests.get("http://www.163.com/")
soup = BeautifulSoup(res.text)
for item in soup.select('.cm_fb'):
print item.text
仍然需要res来储存get到的网页编码,然后再从文本中搜索含有.cm_fb这个标签的文本
再去简书遍历下文章:
我需要提取,作者,文章标题
至于为什么第一张图要那样选择呢,是因为我们需要一个范围给它搜索,就像是找人,你需要知道这个的居住地才能找到吧,而我们选择第一张图绿色的大范围就是去寻找作者和标题的。
总之效果很不错。
SelectorGadget这个应用并非每次都可以成功找到标签,原来是计划去遍历淘宝商品的,结果失败了,不过我会继续探索下去的。