首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python抓取URL问题

Python抓取URL问题
EN

Stack Overflow用户
提问于 2015-09-25 16:38:42
回答 1查看 122关注 0票数 0

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

这是我的密码

代码语言:javascript
复制
#!/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%3 3Alinux/以便有更广泛的项目时,问题就出现了.当我这样做时,输出就是一遍又一遍的第1页的输出。似乎不会提取其他页面。有人知道为什么会发生这种事吗?另外,我从其他人那里得到了r= get(cur.format(i)),我很好奇这到底在做什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-25 16:49:14

代码语言:javascript
复制
http://sourceforge.net/directory/freshness%3Arecently-updated/?page=1

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

代码语言:javascript
复制
http://sourceforge.net/directory/os:windows/freshness:recently-updated/

因此,当您增加您的计数器,您总是重定向回相同的URL。

代码语言:javascript
复制
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'})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32786859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档