Python 无法正确获取所有链接

Python 无法正确获取所有链接,python,python-2.7,python-3.x,beautifulsoup,Python,Python 2.7,Python 3.x,Beautifulsoup,我是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") b

我是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:]

您必须使用新mechanize实例打开新链接:

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:]
虽然我在
print soup1('font')[0]上获取了
索引器,但错误:列表索引超出范围。检查您是否正确废弃网页(当我打开您脚本输出的链接时,网页为空)


输出:

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

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


尝试将链接复制到另一个列表中,并在该列表上循环。

你的意思是什么?我听不懂。你能帮我翻译一下密码吗?我们都给出了相同的答案。或者使用anwser中的代码,或者首先创建变量,将所有链接分配给该变量。然后在for循环中使用该变量(而不是br.links)。当您在web浏览器中打开链接时,您可以看到数据?我认为这是beautiful soup部分最后两行的问题,如果我们删除该变量并尝试正确打印它打印的html,您的问题就会得到回答。您现在需要做的就是检查您选择的元素是否正确。我也选择了正确的元素。它发生在前2个链接,而不是其余的链接。我仍然没有得到所有的链接数据。for loop只给我两个链接。