在 python 中使用 BeautifulSoup 分页
Pagination with BeautifulSoup in python
我正在为这个网站做一个网络抓取项目。
https://yellowpages.com.eg/en/search/fast-food
我设法抓取了数据,但我正在为分页而苦苦挣扎
因为我想制作一个循环来抓取下一页按钮,然后使用下一个按钮中抓取的 URL 来执行相同的过程。
url = 'https://yellowpages.com.eg/en/search/fast-food'
while True:
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
pages = soup.find_all('ul', class_='pagination center-pagination')
for page in pages:
nextpage = page.find('li', class_='waves-effect').find('a', {'aria-label': 'Next'})
if nextpage:
uu = nextpage.get('href')
url = 'http://www.yellowpages.com.eg' + str(uu)
print(url)
else:
break
此代码 returns 分页顺序中的下一个 URL 然后跳出循环。
问题在于
nextpage =page.find('li', class_='waves-effect').find('a', {'aria-label' : 'Next'})
return 下一页按钮,但前提是上一页按钮不存在,这意味着它会在您离开第一页后立即中断(它 returns None).
而是 page.find_all('li', class_='waves-effect')
return 下一个和上一个按钮。
要(也许)稳健地获得“下一步”按钮,请将您的行更改为
nextpage =page.find_all('li', class_='waves-effect')[-1].find('a', {'aria-label' : 'Next'})
我正在为这个网站做一个网络抓取项目。 https://yellowpages.com.eg/en/search/fast-food 我设法抓取了数据,但我正在为分页而苦苦挣扎 因为我想制作一个循环来抓取下一页按钮,然后使用下一个按钮中抓取的 URL 来执行相同的过程。
url = 'https://yellowpages.com.eg/en/search/fast-food'
while True:
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
pages = soup.find_all('ul', class_='pagination center-pagination')
for page in pages:
nextpage = page.find('li', class_='waves-effect').find('a', {'aria-label': 'Next'})
if nextpage:
uu = nextpage.get('href')
url = 'http://www.yellowpages.com.eg' + str(uu)
print(url)
else:
break
此代码 returns 分页顺序中的下一个 URL 然后跳出循环。
问题在于
nextpage =page.find('li', class_='waves-effect').find('a', {'aria-label' : 'Next'})
return 下一页按钮,但前提是上一页按钮不存在,这意味着它会在您离开第一页后立即中断(它 returns None).
而是 page.find_all('li', class_='waves-effect')
return 下一个和上一个按钮。
要(也许)稳健地获得“下一步”按钮,请将您的行更改为
nextpage =page.find_all('li', class_='waves-effect')[-1].find('a', {'aria-label' : 'Next'})