2017-10-12 109 views
1

我成功地刮掉了網站的第一頁,但是當我試圖刮掉多頁面頁面時,它工作正常,但結果完全錯誤。在Python中用循環刮掉多個頁面

代碼:

import requests 
from bs4 import BeautifulSoup 
from urllib.parse import urljoin 
for num in range(1,15): 
    res = requests.get('http://www.abcde.com/Part?Page={num}&s=9&type=%8172653').text 
    soup = BeautifulSoup(res,"lxml") 
    for item in soup.select(".article-title"): 
     print(urljoin('http://www.abcde.com',item['href'])) 

它僅在每個頁面的URL改變一個數字,例如,

http://www.abcde.com/Part?Page=1&s=9&type=%8172653 
http://www.abcde.com/Part?Page=2&s=9&type=%8172653 

我總14頁的這一點。

我的代碼工作,但它只是反覆打印出第一頁的網址14次。我期望的結果是使用循環打印出來自不同頁面的所有不同的URL。

+3

你實際上沒有格式化字符串來替換它的數字......所以如果你使用3.6+或者其他方式''格式(num = num)''將頁碼放入的字符串... –

回答

2

正如喬恩克萊門茨指出,URL格式如下:

res = requests.get('http://www.abcde.com/Part?Page={}&s=9&type=%8172653'.format(num)).text 

您可以在pyformat.info找到更多關於Python格式字符串。

+0

嗨!謝謝(你的)信息。我嘗試過,但它說屬性錯誤:'響應'對象沒有'格式'屬性 – Makiyo

+0

對不起我的壞。最後錯過了一個圓括號。更新了代碼 –

+0

@Makiyo - 它適合你嗎? –