如何用BeautifulSoup从多个网页中获取数据?

2024-06-16 13:05:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我对下面的代码有一个问题,很抱歉,我是新手,我想把完整页面列表中的字符串添加到实际的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' '))

Tags: 数据nameimportcomhttpurl列表链接
2条回答
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' '))

另外,请注意,使用pascalase的名称按惯例是为类保留的。FullPage通常写为fullPage或{},如果它是常量的话。在

相关问题 更多 >