0

我是 python 新手,对代码几乎没有混淆。

在下面的代码中,我试图获取一张表的所有链接,这给了我所有的链接,代码是这样的:

import mechanize
from BeautifulSoup import BeautifulSoup
i=0
url = "http://www.miamidade.gov/water/bill_app/bill_expired.asp"
br = mechanize.Browser()
br.open(url)
br.select_form(name="frm")
br["AcctId"] = '8428995632'
br.submit()
for link in br.links(url_regex="ID="):
    print link

现在,当我添加一个参数来打印同一页面时,我没有得到之前打印的所有链接以及我想为所有链接页面打印的数据,下面是代码,这些额外的行我已添加

    billurl = "http://www.miamidade.gov/water/bill_app/"+link.url
    billdata = br.open(billurl)
    html = billdata.read()
    soup1 = BeautifulSoup(html)
    print soup1('font')[0].text[11:]
4

2 回答 2

0

我认为您正在循环基于“br”对象的内部数据成员的列表。但在循环内部,您正在修改“br”对象。所以循环中断。

尝试将链接复制到另一个列表中,然后遍历该列表。

于 2013-08-27T07:26:06.100 回答
0

您必须使用新的机械化实例打开新链接:

import mechanize
from bs4 import BeautifulSoup

i=0
url = "http://www.miamidade.gov/water/bill_app/bill_expired.asp"
br = mechanize.Browser()
br1 = mechanize.Browser()
br.open(url)
br.select_form(name="frm")
br["AcctId"] = '8428995632'
br.submit()
for link in br.links(url_regex="ID="):
    print link
    billurl = "http://www.miamidade.gov/water/bill_app/"+link.url
    billdata = br1.open(billurl)
    html = billdata.read()
    soup1 = BeautifulSoup(html)
    print soup1('font')[0].text[11:]

虽然我在IndexError: list index out of rangeprint soup1('font')[0].text[11:]。检查您是否正确地报废了网页(当我打开脚本输出的链接时,网页为空)


输出:

Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842891990247', text='08-21-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842891990247')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842892230704', text='07-22-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842892230704')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842890786086', text='06-20-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842890786086')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842892747030', text='05-22-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842892747030')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899532902', text='04-22-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899532902')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899515711', text='03-21-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899515711')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899587533', text='03-05-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899587533')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899585097', text='01-29-2013', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899585097')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899536357', text='12-20-2012', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899536357')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899543531', text='11-26-2012', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899543531')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899524946', text='10-25-2012', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899524946')])
Link(base_url='http://www.miamidade.gov/water/bill_app/BillHistoryLookup.Asp', url='BillDetail.asp?ID=842899578848', text='09-21-2012', tag='a', attrs=[('href', 'BillDetail.asp?ID=842899578848')])
于 2013-08-27T07:22:36.657 回答