BeautifulSoup4小爬虫

BeautifulSoup实例1:

from bs4 import BeautifulSoup
 html_sample='\
 <html>\
 <body>\
 <h1 id="title">Hello world</h1>\
 <a href="" class="link">This is link1</a>\
 <a href="" class="link">This is link2</a>\
 </body>\
 </html>'
 soup=BeautifulSoup(html_sample,'html.parser')
print(soup.text) # 去除标签输出soup的内容
header=soup.select('h1') # 搜索soup里的h1标签,再给header
print(header) 
print(header[0]) # 把搜索出来的h1标签的第一个打印出来
print(header[0].text) #第一个h1标签的内容

alink=soup.select('a') # 搜索soup里的a标签,再给alink
print(alink) 
print(alink[0]) #把搜索出来的a标签的第一个打印出来
print(alink[0].text) #第一个a标签的内容

for link in alink: #遍历alink
 print(link)
for link in alink:
 print(link.text)
for link in alink:
 print(link['href']) #遍历a标签里的href属性
 
a='<a href="#link3" class="link" style="css code">This is link3</a>'
soup2=BeautifulSoup(a,'html.parser')
print(soup2.select('a')[0]['style']) #打印第一个a标签的style属性

BeautifulSoup实例2:

前面的时间和后面的新闻标题url分别来自2个不同的列表,如何让他们并行输出呢?

可以用zip()并行迭代的方法:

for times,news in zip(time, new)

zip()说明:

例如,有两个列表

a = [1,2,3]
b = [4,5,6]

使用zip()函数来可以把列表合并,并创建一个元组对的列表。

zip(a,b)
[(1, 4), (2, 5), (3, 6)]

在python 3.0中zip()是可迭代对象,使用时必须将其包含在一个list中,方便一次性显示出所有结果

list(zip(a,b))
[(1, 4), (2, 5), (3, 6)]

zip()参数可以接受任何类型的序列,同时也可以有两个以上的参数;当传入参数的长度不同时,zip能自动以最短序列长度为准进行截取,获得元组。

>>> l1,l2,l3 = (1,2,3),(4,5,6),(7,8,9)
>>> zip(l1,l2,l3)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]


>>> str1 = 'abc'
>>> str2 = 'def123'
>>> zip(str1,str2)
[('a', 'd'), ('b', 'e'), ('c', 'f')]

zip()方法用在for循环中,就会支持并行迭代:

l1 = [2,3,4]
l2 = [4,5,6]

for (x,y) in zip(l1,l2):
	print x,y,'--',x*y

2 4 -- 8
3 5 -- 15
4 6 -- 24
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值