我有这个一直在努力并且完美的网络刮板。我已经请求有关此代码的其他帮助,但是这次我还没有找到解决此问题的任何帮助。
我一直在尝试根据网络上的一些教程来重建代码,但是工作不多,我濒临开始其他事情的开始,因为如果不想这样做,不想浪费太多时间会工作。
my_url = "https://www.vuokraovi.com/vuokra-asunnot/Uusimaa"
uClient = uReq(my_url)
page_html = uClient.read()
page_soup = soup(page_html, "html.parser")
lastpage = int(pages[0].findAll("li")[7].text)
pages = list(range(1, int(lastpage) + 1))
for page in pages:
my_url = "https://www.vuokraovi.com/vuokra-asunnot/Uusimaa?page=%s&pageType=" %(page)
containers = page_soup.findAll("div", {"class":"list-item-container"})
print("Processing page: %s" %(page))
for container in containers:
try:
Vuokranantaja = container.findAll("div", {"class":"hidden-xs col-sm-3 col-4"})[0].img["alt"]
except TypeError:
Vuokranantaja = container.findAll("div", {"class":"hidden-xs col-sm-3 col-4"})[0].p.strong.text.strip()
except KeyError:
Vuokranantaja = container.findAll("div", {"class":"hidden-xs col-sm-3 col-4"})[0].a["href"]
Huoneistot = container.findAll("li", {"class":"semi-bold"})[1].text
Talotyyppi = container.findAll("li", {"class":"semi-bold"})[0].text
Sijainti = container.findAll("div", {"class":"hidden-xs col-sm-4 col-3"})[0].findAll("span", {"class":"address"})[0].text.strip().replace("\r", "").replace("\n", "").replace(" ", "").replace(",", ", ")
try:
Vapautuu = container.findAll("div", {"class":"hidden-xs col-sm-4 col-3"})[0].findAll("span", {"class":"showing-lease-container hidden-xs"})[0].li.text
except AttributeError:
Vapautuu = "Ei Tiedossa"
Vuokra = container.findAll("li", {"class":"rent"})[0].text.strip()
print("Kohdetta Vuokraa:", Vuokranantaja)
print("Huoneistot:", Huoneistot)
print("Talotyyppi ja Koko:", Talotyyppi)
print("Sijainti:", Sijainti)
print("Vapautuu:", Vapautuu)
print("Vuokra:", Vuokra)
print("")
count += 1
f.write(Vuokranantaja.replace(",", " |") + "," + Huoneistot.replace(",", " - ") + "," + Talotyyppi.replace(",", ".") + "," + Sijainti.replace(",", " -") + "," + Vapautuu + "," + Vuokra.replace(",", ".") + "\n")
f.close()
所需的输出将使代码像在多页上一样进行抓取,但仅在第一页上抓取最后一页所等于的时间。
答案 0 :(得分:1)
在循环中有一个非常明显的错误,您不必在每次迭代时都更新page_soup变量的内容。
应该是:
for page in pages:
my_url = "https://www.vuokraovi.com/vuokra-asunnot/Uusimaa?page=%s&pageType=" %(page)
uClient = uReq(my_url)
page_html = uClient.read()
page_soup = soup(page_html, "html.parser")
...