刮多页美丽的汤

时间:2017-12-07 12:06:43

标签: python beautifulsoup

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

代码......

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

1 个答案:

答案 0 :(得分:0)

你应该缩进最后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'))