Python爬取網址中多個頁面的信息


  通過上一篇博客了解到爬取數據的操作,但對於存在多個頁面的網址來說,使用上一篇博客中的代碼爬取下來的資料並不完整。接下來就是講解該如何爬取之后的頁面信息。

一、審查元素

  鼠標移至頁碼處右鍵,選擇檢查元素

  

 

  接着屏幕下方就會出現對應的html語句

  

 

 

 

 二、分析html語句與項目要求

  本次項目是爬取所有信息,根據第一步中的html語句,我們有兩種爬取后續頁面信息的方法:

  方法一:循環訪問本頁面中的“下一頁”鏈接直至該標簽為空

  

 

 

   即

def next_page(url):
    soup=get_requests(url)
    draw_base_list(soup)
    pcxt=soup.find('div',{'class':'babynames-term-articles'}).find('nav')
    pcxt1=pcxt.find('div',{'class':'nav-links'}).find('a',{'class':'next page-numbers'})
    if pcxt1!=None:
        link=pcxt1.get('href')
        next_page(link)
    else:
        print("爬取完成")

 

  方法二:獲取總頁數,通過更改url來爬取后續信息

 

  通過html語句可以看出不同頁數的url只有最后的數字不一樣,而最后的數字就代表着這個url中的信息是第幾頁的信息。

 

   頁面中的html語句給出了總頁碼,我們只需要定位至該標簽並獲得總頁數即可。

  即

def get_page_size(soup):
    pcxt=soup.find('div',{'class':'babynames-term-articles'}).find('nav')
    pcxt1=pcxt.find('div',{'class':'nav-links'}).findAll('a')
    for i in pcxt1[:-1]:
        link=i.get('href')
        s=str(i)
    page=re.sub('<a class="page-numbers" href="','',s)
    page1=re.sub(link,'',page)
    page2=re.sub('">','',page1)
    page3=re.sub('</a>','',page2)
    pagesize=int(page3)
    print(pagesize)
    return pagesize
    pass

  獲得總頁數后這個模塊還沒有結束,我們還需要更改url來訪問網址,也就是主函數的編寫:

if __name__ == '__main__':
        url="http://www.sheknows.com/baby-names/browse/a/"
        soup=get_requests(url)
        page=get_page_size(soup)
        for i in range(1,page+1):
            url1=url+"page/"+str(i)+"/"
            soup1=get_requests(url1)
            draw_base_list(soup1)

 

  通過以上的兩種方法就可以將多個頁面中的信息都爬取下來了,趕緊動手試試吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM