我正在抓取一个包含多个页面的网页。我非常感谢您对以下问题的帮助:
我围绕网页的网址构建了一个循环。但是,在HTML代码中查找标记时,仅显示第一页的信息。似乎循环并没有真正流过。遗憾的是,我在下面的代码中找不到我的错误:
for pagenumber in range(1,50):
url = "http://suchen.mobile.de/fahrzeuge/auto/search.html?zipcodeRadius=100&scopeId=C&ambitCountry=DE&makeModelVariant1.makeId=3500&makeModelVariant1.modelId=115%2C98%2C80%2C99%2C102%2C81%2C100%2C83%2C105%2C82%2C101%2C120%2C121&makeModelVariant1.modelGroupId=53&isSearchRequest=true&pageNumber + str(pageNumber)"
r = requests.get(url)
soup = BeautifulSoup(r.content,"lxml")
# parsing the data from the webpage
carTypeTemp=[]
carTypeWeb = soup.find_all("span", {"class":"h3"})
# writing the car type/description in a list
for i in range(0,len(carTypeWeb),2):
carTypeTemp.extend((carTypeWeb[i]))
答案 0 :(得分:1)
在你的forloop中你正在做:
url = "* + str(pageNumber)"
这就是网址的真正含义,并不像你想象的那样连接。
>>> "a url + str(pageNumber)"
"a url + str(pageNumber)"
你想:
url = "*" + str(pagenumber)
或者您可以使用字符串格式化程序,无论您喜欢什么。
修改:没有注意到评论中提到的名称/大小写之间的区别。
您希望pagenumber
不是pageNumber
。 pageNumber
不存在。
答案 1 :(得分:0)
尝试将代码中的前两行更改为:
for pagenumber in range(1,50):
url = "http://suchen.mobile.de/fahrzeuge/auto/search.html?zipcodeRadius=100&scopeId=C&ambitCountry=DE&makeModelVariant1.makeId=3500&makeModelVariant1.modelId=115%2C98%2C80%2C99%2C102%2C81%2C100%2C83%2C105%2C82%2C101%2C120%2C121&makeModelVariant1.modelGroupId=53&isSearchRequest=true&pageNumber={pagenumber}".format(pagenumber))
目前您还没有发送带有正确网址的GET
请求。
答案 2 :(得分:0)
好像你忘了把" N"在' pageNumber'而不是' n'和 变化
url = "https://.................. + str(pageNumber)"
到
url = ("http://suchen.mobile.de/fahrzeuge..... " + str(pageNumber))
这给我一个循环
['BMW 430d xDrive Coupé M Sportpaket Head-Up ACC LED', 'BMW 425d Gran Coupé M-Sportpaket Sport-Aut. Navi Pro', 'BMW 420d xDrive Coupé M Sportpaket Navi Apps PDC']
和
['BMW 435i xDrive Gran Coupé M Sportpaket Navi Prof. A', 'BMW 420 Gran Coupé M Sportpaket NEUES MODELL Nav LED', 'BMW 435i Coupé Sport Line GSD Navi Speed Limit Info']