带有循环的url函数不会返回所有这些函数

时间:2018-05-21 02:54:17

标签: beautifulsoup screen-scraping python-3.6

我正在开展一个项目,从州的餐馆检查报告中提取细节。每次检查都有自己的网址。我能够将值收集到字典中,但一次只返回一个。在对函数的调用中,如果我没有指定特定的库条目,我会收到一个错误:''list'对象没有属性'timeout''如果它要求特定的条目,我得到一个好的回报。我怎么能得到它们呢?

# loop through the url list to gather inspection details
detailsLib = {}
def get_inspect_detail(urlList):
    html = urlopen(urlList)
    soup = bs4.BeautifulSoup(html.read(), 'lxml')
    details = soup.find_all('font', {'face': 'verdana'})[10:]
    result = []
    for detail in details:
        siteName = details[0].text
        licNum = details[2].text
        siteRank = details[4].text

        detailsLib = {
            'Restaurant': siteName,
            'License': licNum,
            'Rank': siteRank,
        }
        result.append(detailsLib)

    return result

get_inspect_detail(urlList[21])

所以我可以在名单上找到第21家餐厅,重复36次,但不是全部。 另一天的另一个问题是在哪里进行清理。细节需要一些正则表达式的工作,但我不确定是在函数内部(一次一个),还是在函数外部通过调用库中特定键的所有值。

1 个答案:

答案 0 :(得分:0)

get_inspect_detail()中的每个项目都会调用urlList一次,并保存所有结果。

all_results = []
for url in urlList:
    details = get_inspect_detail(url)
    all_results.extend(details)