Python中BeautifulSoup语法问题请教

以下代码用于从 http://buy.ccb.com/ 网站爬取手机栏目的地址,在 while 模块中逐个提取链接并判断该链接的说明文字是否为“手机”,是的话就返回该链接,否则继续提取其余链接, 如果链接都遍历完毕还没找到,则在 try 模块中捕捉该异常并返回 None。

from urllib.request import urlopen   
from bs4 import BeautifulSoup    
import re   

baseUrl=“http://buy.ccb.com/” def getMobileLinks(articleUrl):
html = urlopen(baseUrl+articleUrl)
bsObj = BeautifulSoup(html,‘lxml’)
isFound = 0 url = bsObj.find(“div”, {“class”:“lists”}).find(“a”, href=True)
while isFound == 0 : print(“a=”,url)
h=re.search(r’手机’, ‘’.join(url)) if h != None : isFound = 1
return url.attr(“href”) else: try: url = bsObj.find(“div”, {“class”:“lists”}).find_next(“a”, href=True) #语句 1 except Exception as e: #语句 2 print(“Not Found!”,e) return None

links = getMobileLinks("")
print(‘links=’,links)

上面代码反复输出如下一行内容: a= http://buy.ccb.com/searchproducts/pv_0_0_0_0.jhtml?hotKeySize=6&hotMerchantList=%24hotMerchantList.size()&catId=&selectCatId=&qa=&query=APPLE " style=“margin: 0px 3px 0px 0px;” target="_blank">苹果

我的问题如下: 1、语句 1 用于获取 BeautifulSoup 找到的下一个"a"标签对象,虽然执行没有报错但是出现了死循环,看来是 find_next 找下一个"a"标签对象的语法不对,请问正确的语法应该如何写呢?

2、语句 2 的本意是在 BeautifulSoup 返回的"a"标签对象都遍历完毕时报错,但是不知道没有"a"标签对象可找时会抛出什么异常? 恳请大家指点,感谢!


Python中BeautifulSoup语法问题请教

4 回复

用 Soup.find_all()找到所有的 a 标签,然后针对所有的标签遍历。


我无法理解你的问题

看了这个材料,但是好像没有提到 find_next 如果没有结果可找时会返回什么错误呢?

回到顶部