Python - 从具有特定类的div中获取所有链接
我正在使用BeautifulSoup这个工具,从这个网址获取所有手机的链接:http://www.gsmarena.com/samsung-phones-f-9-0-p2.php
我写的代码是:
import urllib2
from BeautifulSoup import BeautifulSoup
url = "http://www.gsmarena.com/samsung-phones-f-9-0-p2.php"
text = urllib2.urlopen(url).read();
soup = BeautifulSoup(text);
data = soup.findAll('div',attrs={'class':'makers'});
for i in data:
print "http://www.gsmarena.com/" + i.ul.li.a['href'];
但是我发现返回的链接列表比我预期的要少。当我检查时,这段代码只输出了3个链接,但实际上应该有超过10个链接。
4 个回答
0
因为你每个
里只输出一个链接,而从那个网站上看,里面有多个链接,每个链接都在自己的里,而且每个
- 里有多个
- 。你需要遍历所有的
- 。
3
如果你使用的是Python 3,可以参考Simon的回答,只需要做以下修改:
from urllib.request import urlopen
from bs4 import BeautifulSoup
text = urlopen(base_url).read()
42
在这个页面上,只有三个带有'makers'类的<div>
元素,这段代码会打印每个
里的第一个链接,所以总共会打印三个链接。
这可能更接近你想要的效果:
import urllib2
from BeautifulSoup import BeautifulSoup
url = "http://www.gsmarena.com/samsung-phones-f-9-0-p2.php"
text = urllib2.urlopen(url).read()
soup = BeautifulSoup(text)
data = soup.findAll('div',attrs={'class':'makers'})
for div in data:
links = div.findAll('a')
for a in links:
print "http://www.gsmarena.com/" + a['href']