Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用BeautifulSoup从多个网页中刮取数据?_Python_Python 2.7_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 如何使用BeautifulSoup从多个网页中刮取数据?

Python 如何使用BeautifulSoup从多个网页中刮取数据?,python,python-2.7,web-scraping,beautifulsoup,Python,Python 2.7,Web Scraping,Beautifulsoup,我对下面的代码有一个问题,很抱歉,我是新手,我想把完整页面列表中的字符串添加到实际的URL中,然后我想访问它们并从页面中获取一些数据。到目前为止,它一直很好,但我不知道如何让它访问列表中的其他链接 输出将只给我一页的数据,但我需要30页的数据,我怎么能让这个程序通过每个链接 URL有一个模式,第一部分有,第二部分有产品类别名称 import urllib2 from bs4 import BeautifulSoup FullPage = ['New-Arrivals-2017-6', 'Big

我对下面的代码有一个问题,很抱歉,我是新手,我想把完整页面列表中的字符串添加到实际的URL中,然后我想访问它们并从页面中获取一些数据。到目前为止,它一直很好,但我不知道如何让它访问列表中的其他链接

输出将只给我一页的数据,但我需要30页的数据,我怎么能让这个程序通过每个链接

URL有一个模式,第一部分有,第二部分有产品类别名称

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' '))

如果您想替换每个链接,则将代码的最后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的名称是为类保留的。全页通常被写成全页或全页,如果它是常量的话。

就这些了吗?哦,天哪,我真是个初学者。非常感谢兄弟!我很高兴这是有益的。接受答案吧
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' '))