【问题标题】:Scraping multiple pages beautiful soup刮多页美汤
【发布时间】:2017-12-07 12:06:42
【问题描述】:

我正在尝试删除多个页面以获取文档链接。所以我设置了一个字符串来改变页码(在下面的示例中从第 1 页到第 6 页) - 我将字符串循环到 url - 但是当我用漂亮的汤解析链接时 - 我只得到高范围 -即我覆盖了所有以前的页面。

代码...

from requests import get
from bs4 import BeautifulSoup
pages = [str(i) for i in range(1,6)]
for page in pages:
    response = get('http://www.sedar.com/FindCompanyDocuments.do?lang=EN&page_no=' + page + '&company_search=All+%28or+type+a+name%29&document_selection=24&industry_group=A&FromDate=01&FromMonth=01&FromYear=2017&ToDate=06&ToMonth=12&ToYear=2017&Variable=DocType')
page_html = BeautifulSoup(response.text, 'html.parser')

for link in page_html.find_all('a'):
   print(link.get('title')) 

有 6 页,我预计会有大约 600 个链接 - 但正如我所说,我似乎只获得了该范围的最后一部分。 (顺便说一句 - 输出链接很好且正确,我将在稍后阶段为 http 地址添加前缀。作为我的新手,我猜有一个我没见过的简单解决方案(不是因为不想找到:))

None
&docClass=24&issuerNo=00040114&issuerType=03&projectNo=02637890&docId=4133021
None
&docClass=24&issuerNo=00005620&issuerType=03&projectNo=02700766&docId=4219364
None
&docClass=24&issuerNo=00005620&issuerType=03&projectNo=02700766&docId=4219365

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    您应该缩进最后 3 行,因此它们是迭代的一部分。在所有迭代完成后,它只处理最后一部分。

    for page in pages:
        response = get('http://www.sedar.com/FindCompanyDocuments.do?lang=EN&page_no=' + page + '&company_search=All+%28or+type+a+name%29&document_selection=24&industry_group=A&FromDate=01&FromMonth=01&FromYear=2017&ToDate=06&ToMonth=12&ToYear=2017&Variable=DocType')
        page_html = BeautifulSoup(response.text, 'html.parser')
    
        for link in page_html.find_all('a'):
            print(link.get('title')) 
    

    【讨论】:

    • 非常感谢。简单 - (我确实说过我是新手!)
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多