簡體   English   中英

如何使用BeauitfulSoup從多個網頁抓取數據?

[英]How do I scrape data from multiple webpages with BeauitfulSoup?

我的以下代碼有問題,很抱歉,我是這一切的新手,我想將FullPage列表中的字符串添加到實際URL中,然后再訪問它們並從頁面中抓取一些數據。 到目前為止,這很好,但是我不知道如何訪問列表中的其他鏈接。

輸出只會給我一頁數據,但我需要30頁數據,如何使該程序遍歷每個鏈接?

URL具有模式,第一部分具有' http://arduinopak.com/Prd.aspx?Cat_Name= ',第二部分具有產品類別名稱。

import urllib2
from bs4 import BeautifulSoup

FullPage = ['New-Arrivals-2017-6', 'Big-Sales-click-here', 'Arduino-Development-boards',
            'Robotics-and-Copters']


urlp1 = "http://www.arduinopak.com/Prd.aspx?Cat_Name="
URL = urlp1 + FullPage[0]

for n in FullPage:
    URL = urlp1 + n
    page = urllib2.urlopen(URL)
    bsObj = BeautifulSoup(page, "html.parser")


descList = bsObj.findAll('div', attrs={"class": "panel-default"})
for desc in descList:
    print(desc.getText(separator=u' '))
import urllib2
from bs4 import BeautifulSoup

FullPage = ['New-Arrivals-2017-6', 'Big-Sales-click-here', 'Arduino-Development-boards',
            'Robotics-and-Copters']

urlp1 = "http://www.arduinopak.com/Prd.aspx?Cat_Name="
URL = urlp1 + FullPage[0]

for n in FullPage:
    URL = urlp1 + n
    page = urllib2.urlopen(URL)
    bsObj = BeautifulSoup(page, "html.parser")

    descList = bsObtTj.findAll('div', attrs={"class": "panel-default"})
    for desc in descList:
        print(desc.geext(separator=u' '))

如果您希望對每個鏈接進行換碼,則將代碼的最后3行移入循環即可。

您當前的代碼獲取所有鏈接,但僅存儲一個BeautifulSoup對象引用。 您可以將它們全部存儲在數組中或在訪問另一個URL之前對其進行處理(如下所示)。

for n in FullPage:
    URL = urlp1 + n
    page = urllib2.urlopen(URL)
    bsObj = BeautifulSoup(page, "html.parser")

    descList = bsObj.findAll('div', attrs={"class": "panel-default"})
    for desc in descList:
        print(desc.getText(separator=u' '))

另外,請注意,使用PascalCase命名的名稱是按慣例保留給類的。 如果要表示常量,則FullPage通常將其寫為fullPageFULL_PAGE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM