Python 抓取 URL 问题
Python Scraping URL issue
我正在编写一个简单的 python3 脚本来从 Sourceforge.net 中提取尽可能多的 public 代表os故事。我 运行 遇到了 url 的一个奇怪问题,我很好奇它为什么会发生:
这是我的代码
#!/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/ 以便拥有更广泛的 运行ge 项目时,问题就出现了……当我这样做时,输出是页面 1 一遍又一遍的输出。似乎不提取其他页面。有谁知道为什么会这样?我还从其他人那里得到了 r = get(cur.format(i)) 并且很好奇这实际上在做什么。
http://sourceforge.net/directory/freshness%3Arecently-updated/?page=1
不是有效的 URL。它重定向到:
http://sourceforge.net/directory/os:windows/freshness:recently-updated/
因此,当您增加计数器时,您总是会重定向回相同的 URL。
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'})
我正在编写一个简单的 python3 脚本来从 Sourceforge.net 中提取尽可能多的 public 代表os故事。我 运行 遇到了 url 的一个奇怪问题,我很好奇它为什么会发生:
这是我的代码
#!/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/ 以便拥有更广泛的 运行ge 项目时,问题就出现了……当我这样做时,输出是页面 1 一遍又一遍的输出。似乎不提取其他页面。有谁知道为什么会这样?我还从其他人那里得到了 r = get(cur.format(i)) 并且很好奇这实际上在做什么。
http://sourceforge.net/directory/freshness%3Arecently-updated/?page=1
不是有效的 URL。它重定向到:
http://sourceforge.net/directory/os:windows/freshness:recently-updated/
因此,当您增加计数器时,您总是会重定向回相同的 URL。
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'})