为什么这个requests/beautifulsoup代码不遵循URL循环?



关于这段代码,我遇到了一些麻烦:

import requests
from bs4 import BeautifulSoup
for idPkmn in range(2,494,1):
url = 'https://pokedex.org/#/pokemon/'+str(idPkmn)
#print(url)
webPage = requests.get(url)
print(webPage)
html = BeautifulSoup(webPage.content,'html.parser')
namePkmn = html.find('h1',attrs={'class':'detail-panel-header'}).text.lower() # Get name
print(namePkmn)

我试图从这个网站上取所有的口袋妖怪的名字,如果我之前运行这段代码:

import requests
from bs4 import BeautifulSoup
url = 'https://pokedex.org/#/pokemon/1'
webPage = requests.get(url)
htmlCode = BeautifulSoup(webPage.content,'html.parser')
namePkmn = htmlCode.find('h1',attrs={'class':'detail-panel-header'}).text.lower()
print(namePkmn)

它把我送回'bulbasaur'(这确实是第一个口袋妖怪)。然而,如果我运行for循环,它似乎有效地采取了良好的URL,但它一直发送回'bulbasaur'作为错误的名称,好像我的循环被粘贴到第一页。我检查了几个页面,它们都有相同的结构,其中名称有效地包装成h1标题,其中类是'detail-panel-header'。

所有页面的detail-panel-headerBulbasaur具有相同的值,因此您得到相同的值。

如果你只想要所有口袋妖怪的名字,那么你可以使用monsters-list标签定义的ul,并获得所有口袋妖怪的名字:

import requests
from bs4 import BeautifulSoup
url = 'https://pokedex.org/#/pokemon/0'
print(url)
webPage = requests.get(url)
print(webPage)
html = BeautifulSoup(webPage.content,'html.parser')
uls = html.find('ul', attrs = {'id':'monsters-list'})
for li in uls.findAll('li'):
for span in li.findAll('span'):            
print(span.text.lower())

输出:

bulbasaur
ivysaur
venusaur
charmander
charmeleon
charizard
squirtle
wartortle
blastoise
caterpie
metapod
butterfree
weedle
kakuna
beedrill
pidgey
pidgeotto
pidgeot
rattata
raticate
spearow
fearow
ekans
arbok
pikachu
raichu
sandshrew
sandslash
nidoran ♀
nidorina
nidoqueen
nidoran ♂
nidorino
nidoking
clefairy
clefable
vulpix
ninetales
jigglypuff
wigglytuff
zubat
golbat
oddish
gloom
vileplume
paras
parasect
venonat
venomoth
diglett
dugtrio
meowth
persian
psyduck
golduck
mankey
primeape
growlithe
arcanine
poliwag
poliwhirl
poliwrath
abra
kadabra
alakazam
machop
machoke
machamp
bellsprout
weepinbell
victreebel
tentacool
tentacruel
geodude
graveler
golem
ponyta
rapidash
slowpoke
slowbro
magnemite
magneton
farfetch'd
doduo
dodrio
seel
dewgong
grimer
muk
shellder
cloyster
gastly
haunter
gengar
onix
drowzee
hypno
krabby
kingler
voltorb

最新更新