网页抓取多个页面

时间:2016-06-06 21:04:22

标签: python

我正在抓取一个包含多个页面的网页。我非常感谢您对以下问题的帮助:

我围绕网页的网址构建了一个循环。但是,在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]))

3 个答案:

答案 0 :(得分:1)

在你的forloop中你正在做:

url = "* + str(pageNumber)"

这就是网址的真正含义,并不像你想象的那样连接。

>>> "a url + str(pageNumber)"
"a url + str(pageNumber)"

你想:

url = "*" + str(pagenumber)

或者您可以使用字符串格式化程序,无论您喜欢什么。

修改:没有注意到评论中提到的名称/大小写之间的区别。

您希望pagenumber不是pageNumberpageNumber不存在。

答案 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']