Python Scraping URL问题

时间:2015-09-25 16:38:42

标签: python url web-scraping beautifulsoup

我正在编写一个简单的python3脚本,以便从Sourceforge.net中提取尽可能多的公共存储库。我在网址上遇到了一个奇怪的问题,我很好奇为什么会这样:

这是我的代码

#!/usr/bin/env python3

import time
from requests import get
from bs4 import BeautifulSoup

results = []

for i in range(1,100):
    cur = 'http://sourceforge.net/directory/os%3Alinux/freshness%3Arecently-updated/?page=' + str(i)
    #print(cur + '\n')
    r = get(cur.format(i))
    soup = BeautifulSoup(r.text,'html.parser')
    results += soup.find_all('span',{'itemprop': 'name'})
    for result in results:
        print('Found Project: '.join(result.contents))
    time.sleep(.5)
    results = []

当我从url中删除/ os%3Alinux /以便拥有更广泛的项目时出现问题...当我这样做时,输出是第1页的输出一遍又一遍。不提取它看起来的其他页面。有谁知道为什么会这样?另外我从其他人那里得到了r = get(cur.format(i))并且很好奇这是实际做了什么。

1 个答案:

答案 0 :(得分:1)

http://sourceforge.net/directory/freshness%3Arecently-updated/?page=1

不是有效的网址。它重定向到:

http://sourceforge.net/directory/os:windows/freshness:recently-updated/

因此,当您递增计数器时,您始终会重定向回相同的网址。

from bs4 import BeautifulSoup
import requests



for page in range(1, 100):
   r  = requests.get("http://sourceforge.net/directory/?page=" + str(page))
   data = r.text
   soup = BeautifulSoup(data, "html.parser")

   print soup.find_all('span',{'itemprop': 'name'})