Я пытаюсь извлечь некоторую информацию из веб-страницы, и у меня есть следующий код:
import re
from math import ceil
from urllib.request import urlopen as uReq, Request
from bs4 import BeautifulSoup as soup
InitUrl="https://mtgsingles.gr/search?q="
NumOfCrawledPages = 0
URL_Next = ""
NumOfPages=5
for i in range(0, NumOfPages):
if i == 0:
Url = InitUrl
else:
Url = URL_Next
UClient = uReq(Url) # downloading the url
page_html = UClient.read()
UClient.close()
page_soup = soup(page_html, "html.parser")
cards = page_soup.findAll("div", {"class": ["iso-item", "item-row-view"]})
for card in cards:
card_name = card.div.div.strong.span.contents[3].contents[0].replace("\xa0 ", "")
if len(card.div.contents) > 3:
cardP_T = card.div.contents[3].contents[1].text.replace("\n", "").strip()
else:
cardP_T = "Does not exist"
cardType = card.contents[3].text
print(card_name + "\n" + cardP_T + "\n" + cardType + "\n")
try:
URL_Next = "https://mtgsingles.gr" + page_soup.findAll("li", {"class": "next"})[0].contents[0].get("href")
print("The next URL is: " + URL_Next + "\n")
except IndexError:
print("Crawling process completed! No more infomation to retrieve!")
else:
print("The next URL is: " + URL_Next + "\n")
NumOfCrawledPages += 1
Url= URL_Next
finally:
print("Moving to page : " + str(NumOfCrawledPages + 1) + "\n")
Код работает нормально, ошибок нет, но результаты не такие, как ожидалось.Я пытаюсь извлечь некоторую информацию со страницы, а также URL следующей страницы.В конечном итоге я хотел бы, чтобы программа запускалась 5 раз и сканировала 5 страниц.Но этот код сканирует начальную заданную страницу (InitUrl = "xyz.com") все 5 раз и не переходит к URL-адресу следующей извлеченной страницы.Я попытался отладить его, введя некоторые операторы печати, чтобы увидеть, в чем заключается проблема, и думаю, что проблема заключается в следующих утверждениях:
UClient = uReq(Url)
page_html = UClient.read()
UClient.close()
По какой-то причине urlopen не работает повторно в цикле for.Почему это происходит?