【发布时间】:2015-02-05 10:59:45
【问题描述】:
我目前正在开发一个网络爬虫。我希望我的代码从我抓取的所有网址中获取文本。函数 getLinks() 找到我想要从中获取数据的链接并将它们放入数组中。该数组当前填充了 12 个链接,如下所示: 'http://www.computerstore.nl/product/142504/category-100852/wd-green-wd30ezrx-3-tb.html'
这是我的函数的代码,它使用我从getLinks() 获得的 url 循环遍历我的数组,并从中获取数据。所以我遇到的问题是它有时会返回文本 6 次,有时会返回 8 或 10 次。但不是应有的 12 次。
def getSpecs():
i = 0
while (i < len(clinks)):
r = (requests.get(clinks[i]))
s = (BeautifulSoup(r.content))
for item in s.find_all("div", {"class" :"productSpecs roundedcorners"}):
print item.find('h3')
i = i + 1
getLinks()
getSpecs()
我该如何解决这个问题?请帮忙。
提前致谢!
【问题讨论】:
-
为什么要使用
i或j和while循环而不是for url in curl:? -
另外,为什么要在覆盖初始分配之前分配
item,将其重新用作迭代器? -
另外,如果问题出在
getSpecs,而不是getLinks,您可以只向我们提供getSpecs和getLinks返回的URL示例,你的问题会更小,更集中。 -
顺便说一句,让
getLinks返回一个新的 URL 列表而不是修改全局变量会更好。 -
...就个人而言,我的猜测是,在处理的一种情况下,您得到的
class不是完全字符串productSpecs roundedcorners;也许是roundedcorners productSpecs,或者productSpecs roundedcorners somethingElse。
标签: python beautifulsoup web-crawler findall