循环从几页自动抓取数据

由于我一直在试图弄清楚如何制作一个循环而我无法从其他线程中制作它,因此我需要帮助。我对此完全陌生,因此编辑现有代码对我来说很难。


我正在尝试从网站上抓取数据。这是我到目前为止所做的,但我必须“手动”插入页面。我希望它自动从 1 到 20 页以 zl/m2 为单位抓取价格,例如:


import requests

from bs4 import BeautifulSoup


link=("https://ogloszenia.trojmiasto.pl/nieruchomosci-mam-do-wynajecia/wi,100.html?strona=1")

page = requests.get(link).text


link1=("https://ogloszenia.trojmiasto.pl/nieruchomosci-mam-do-wynajecia/wi,100.html?strona=2")

page1 = requests.get(link1).text


link2=("https://ogloszenia.trojmiasto.pl/nieruchomosci-mam-do-wynajecia/wi,100.html?strona=3")

page2 = requests.get(link2).text


pages=page+page1+page2+page3+page4+page5+page6


soup = BeautifulSoup(pages, 'html.parser')

price_box = soup.findAll('p', attrs={'class':'list__item__details__info details--info--price'})


prices=[]


for i in range(len(price_box)):

prices.append(price_box[i].text.strip())


prices    

我试过这段代码,但卡住了。我不知道我应该添加什么来一次从 20 页获取输出以及如何将其保存到 csv 文件。


npages=20

baselink="https://ogloszenia.trojmiasto.pl/nieruchomosci-mam-do-wynajecia/wi,100.html?strona="

for i in range (1,npages+1):

link=baselink+str(i)

page = requests.get(link).text

在此先感谢您的帮助。


蓝山帝景
浏览 186回答 1
1回答

拉风的咖菲猫

Python 对空格敏感,因此任何循环的代码块都需要缩进,如下所示:for i in range (1,npages+1):    link=baselink+str(i)    page = requests.get(link).text如果您希望所有页面都在一个字符串中(因此您可以使用与上面的 pages 变量相同的方法),您可以将这些字符串附加到循环中:pages = ""for i in range (1,npages+1):    link=baselink+str(i)    pages += requests.get(link).text要使用结果创建 csv 文件,您可以查看 python 内置csv 模块中的 csv.writer() 方法,但我通常发现使用 print() 写入文件更容易:with open(samplefilepath, mode="w+") as output_file:    for price in prices:        print(price, file=output_file)w+告诉python如果文件不存在则创建文件,如果存在则覆盖。a+如果存在,将附加到现有文件
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python