【问题标题】:Crawling output - connecting two variables爬行输出 - 连接两个变量
【发布时间】:2015-11-22 15:06:28
【问题描述】:

我想知道如何组合两个变量。

我的目标是,如果我正在爬行,它应该打印出 partnerID = 27236 代表罗马,如果我正在爬行,它应该打印出 partnerID = 3,例如7665代表柏林。

这是我的代码:

RegionID = {7236: 2, 7665: 3}

for reg in RegionID:
    page = 0
    while page <= max_pages:
        page += 1
        r = requests.get("http://www.spasso.com/affiliatesearch.aspx?&regionid=" + str(reg) + "&pid=" + str(page))
        soup = BeautifulSoup(r.content)

        g_data = soup.find_all("div", {"class": "gridHeadOuter productInfoOuter"})

        for item in g_data:
            Header = item.find_all("div", {"class": "offerInto"})
            Header_final = (Header[0].contents[0].text.strip())

        partner_ID = 2

        print("Header: " + Header_final + " | " + "PartnerID: " + partner_ID) 

这是我从上面的代码中得到的输出:

Header: 1-hour Paris Sightseeing Cruise | PartnerID: 3

Header: Rome DC Open Top Hop-On Hop-Off | PartnerID: 3

理想的输出是这样的:

Header: 1-hour Paris Sightseeing Cruise | PartnerID: 3

Header: Rome DC Open Top Hop-On Hop-Off | PartnerID: 2

我不想使用if...else 语句,因为我会有很多RegionIDs,我正在寻找更有效的解决方案。

更新

修改了我的代码,因为它有一些错误。按照建议创建了一个 dic,但现在仍然知道如何在不使用每次 if...else 语句的情况下完成它

【问题讨论】:

  • 试试字典,也请重新运行您的代码并发布它和输出。上面的代码有问题,没有生成你显示的输出。
  • 感谢您的反馈。你能详细说明一下吗?在这种情况下如何创建 dic?我有点困惑。抱歉,如果我让您感到不安,但我对 Python 还是很陌生
  • 这里有一个字典教程learnpythonthehardway.org/book/ex39.html 它将城市名称与您感兴趣的号码{'Paris':2,'Rome':3} 联系起来,这样您就可以轻松获得PartnerID。但是首先您的代码存在一些问题,因此如果您需要帮助,请重新发布工作代码(或带有错误输出的非工作代码)
  • 感谢您的反馈。修改了我的代码。请看一看。我按照您的建议创建了一个 dic,但是如何在不每次都使用 If else 语句的情况下获得所需的结果。感谢您的反馈

标签: python beautifulsoup web-crawler


【解决方案1】:

我修改了您上面的代码以使其正常工作。下面是如何使用dictionary 获取PartnerID 的示例。

RegionIDArray = [7236, 7665]
dict = {7236: 2, 7665: 3} #{'Rome': 3, 'Paris': 2}
for RegionID in RegionIDArray:
    for page in range(1,2):
        url = "http://www.isango.de/affiliatesearch.aspx?&regionid=" + str(RegionID) + "&pid=" + str(page)
        html = urllib.request.urlopen(url).read()
        soup = BeautifulSoup(html)

        g_data = soup.find_all("div", {"class": "gridHeadOuter productInfoOuter"})
        for item in g_data:
            Header = item.find_all("div", {"class": "offerInto"})
            Header_final = (Header[0].contents[0].text.strip())

        print("Header: " + Header_final + " | " + "PartnerID: " + str(dict[RegionID]))

输出是:

Header: Washington Odyssey Lunch Cruise | PartnerID: 2
Header: Audio Tour, Candlelit Dinner and Concert at Charlottenburg Palace, Berlin | PartnerID: 3

【讨论】:

  • 很高兴它有帮助,如果这个问题已经完成,请接受它以将其从未回答的队列中取出。
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
相关资源
最近更新 更多