python web scraper-我做错了什么?

python web scraper-我做错了什么?,python,python-2.7,web-scraping,beautifulsoup,Python,Python 2.7,Web Scraping,Beautifulsoup,我是一个新手,正在构建一个网络刮板,它将抓取(并最终导出为csv)所有英国麦当劳的地址、邮政编码和电话号码。我使用的是聚合器,而不是麦当劳的网站 我借用了一些代码并重新调整了其用途: from bs4 import BeautifulSoup from urllib2 import urlopen BASE_URL = "https://www.localstore.co.uk/stores/75639/mcdonalds-restaurant/" def get_category_lin

我是一个新手,正在构建一个网络刮板,它将抓取(并最终导出为csv)所有英国麦当劳的地址、邮政编码和电话号码。我使用的是聚合器,而不是麦当劳的网站

我借用了一些代码并重新调整了其用途:

from bs4 import BeautifulSoup
from urllib2 import urlopen

BASE_URL = "https://www.localstore.co.uk/stores/75639/mcdonalds-restaurant/"

def get_category_links(section_url):
    html = urlopen(section_url).read()
    soup = BeautifulSoup(html, "lxml")
    boccat = soup.find("tr")
    category_links = [BASE_URL + tr.a["href"] for tr in boccat.findAll("h2")]
    return category_links

def get_restaurant_details(category_url):
    html = urlopen(category_url).read()
    soup = BeautifulSoup(html, "lxml")
    streetAddress = soup.find("span", "streetAddress").string
    addressLocality = [h2.string for h2 in soup.findAll("span", "addressLocality")]
    addressRegion = [h2.string for h2 in soup.findAll("span", "addressRegion")]
    postalCode = [h2.string for h2 in soup.findAll("span", "postalCode")]
    phoneNumber = [h2.string for h2 in soup.findAll("td", "b")]
    return {"streetAddress": streetAddress,
            "addressLocality": addressLocality,
            "postalCode": postalCode,
            "addressRegion": addressRegion,
            "phoneNumber": phoneNumber}
我认为我没有抓取数据-当我运行以下行时:

print(postalCode)

我得到以下错误

NameError: name 'postalCode' is not defined

知道我做错了什么吗?

正如其他人所评论的,您需要首先实际调用您的函数

做这样的事

if __name__ == '__main__':
    res = "https://www.localstore.co.uk/store/329213/mcdonalds-restaurant/london/"
    print(get_restaurant_details(res)["postalCode"])

在你的两个功能之后。我刚刚访问了这个网站,得到了一个适用于你的程序的URL,但我从未真正测试过它。你现在的主要问题是你实际上什么都没做。你需要调用一个函数

正如其他人所评论的,您需要首先实际调用您的函数

做这样的事

if __name__ == '__main__':
    res = "https://www.localstore.co.uk/store/329213/mcdonalds-restaurant/london/"
    print(get_restaurant_details(res)["postalCode"])

在你的两个功能之后。我刚刚访问了这个网站,得到了一个适用于你的程序的URL,但我从未真正测试过它。你现在的主要问题是你实际上什么都没做。你需要调用一个函数

首先,你需要调用你的函数。。。哦,复制和粘贴的危险…
get\u restaurant\u details
返回一个dict。如果要访问该dict中的数据,需要对其进行索引。它不会在调用它的范围内自动创建一堆新变量;那些
postalCode
和其他变量是本地变量。在哪里定义了
postalCode
?您的打印语句是否在
postalCode
存在的范围内?函数中定义的名称不会泄漏出去,因此您可以在任何地方使用它们!想象一下,试图跟踪在何处定义的内容。有人能给我举个例子,说明我如何调用函数,以提供我试图获取的一些数据吗?在网上搜索-我可以看到这种格式可能有助于
get\u category\u链接(https://www.localstore.co.uk/stores/75639/mcdonalds-restaurant/)
-但它会返回一系列错误。我担心我还没有足够的能力来解决这个问题。首先,你需要调用你的函数。。。哦,复制和粘贴的危险…
get\u restaurant\u details
返回一个dict。如果要访问该dict中的数据,需要对其进行索引。它不会在调用它的范围内自动创建一堆新变量;那些
postalCode
和其他变量是本地变量。在哪里定义了
postalCode
?您的打印语句是否在
postalCode
存在的范围内?函数中定义的名称不会泄漏出去,因此您可以在任何地方使用它们!想象一下,试图跟踪在何处定义的内容。有人能给我举个例子,说明我如何调用函数,以提供我试图获取的一些数据吗?在网上搜索-我可以看到这种格式可能有助于
get\u category\u链接(https://www.localstore.co.uk/stores/75639/mcdonalds-restaurant/)
-但它会返回一系列错误。我担心我还没有足够的能力来解决这个问题,谢谢。你能在第1行提供一点更清晰的信息吗?你可以在这里阅读更多关于它的内容:非常有帮助-我也在YT上更全面地研究函数。看来我有办法找到汉克斯。你能在第1行提供一点更清晰的信息吗?你可以在这里阅读更多关于它的内容:非常有帮助-我也在YT上更全面地研究函数。看来我还有路要走