繁体   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