我想从数据分布在多个页面中的网站解析一些信息。
问题是我不知道有多少页。可能有 2 个,但也可能有 4 个,甚至只有一页。
当我不知道会有多少页时,如何遍历页面?
不过我知道 url 模式,它看起来像下面的代码。
此外,页面名称不是纯数字,但它们在第 2 页的 'pe2'
和第 3 页的 'pe4'
等中。所以不能只是循环范围(数字)。
这是我正在尝试修复的循环的伪代码。
pages=['','pe2', 'pe4', 'pe6', 'pe8',]
import requests
from bs4 import BeautifulSoup
for i in pages:
url = "http://www.website.com/somecode/dummy?page={}".format(i)
r = requests.get(url)
soup = BeautifulSoup(r.content)
#rest of the scraping code
可以使用while循环,遇到异常就停止运行。
代码:
from bs4 import BeautifulSoup
from time import sleep
import requests
i = 0
while(True):
try:
if i == 0:
url = "http://www.website.com/somecode/dummy?page=pe"
else:
url = "http://www.website.com/somecode/dummy?page=pe{}".format(i)
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
#print page url
print(url)
#rest of the scraping code
#don't overflow website
sleep(2)
#increase page number
i += 2
except:
break
输出:
http://www.website.com/somecode/dummy?page
http://www.website.com/somecode/dummy?page=pe2
http://www.website.com/somecode/dummy?page=pe4
http://www.website.com/somecode/dummy?page=pe6
http://www.website.com/somecode/dummy?page=pe8
...
... and so on, until it faces an Exception.
我是一名优秀的程序员,十分优秀!