【问题标题】:Web Scraper - getting duplicates in outputWeb Scraper - 在输出中获取重复项
【发布时间】:2015-05-04 08:57:59
【问题描述】:

我对 Python 完全陌生,只是尝试我的编码技能来开发一些程序

我在 Python 2.7 中编写了以下程序以从目录中获取配置文件 URL - http://www.uschirodirectory.com/entire-directory/list/alpha/a.html

但是,我注意到获取的 URL 列表中有很多重复的条目。有人可以查看代码并告诉我是否有我正在做的事情,或者是否有办法进一步优化此代码。

非常感谢

import requests
from bs4 import BeautifulSoup

def web_crawler(max_pages):
p = '?site='
page = 1
alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
while page <= max_pages:
    for i in alpha:
        url = 'http://www.uschirodirectory.com/entire-directory/list/alpha/' + str(i) + '.html' + p + str(page)
        code = requests.get(url)
        text = code.text
        soup = BeautifulSoup(text)
        for link in soup.findAll('a',{'class':'btn'}):
            href = 'http://www.uschirodirectory.com' + link.get('href')
            print(href)
    page += 1
i += alpha[0 + 1]

#Run the crawler
web_crawler

【问题讨论】:

    标签: python-2.7 for-loop while-loop web-scraping beautifulsoup


    【解决方案1】:

    基本上你的代码没问题。您可能会得到很多重复的链接,因为目录结果的设计目的不仅是针对医生姓名中的第一个字母,而且针对公司名称或其他重要数据库字段中的第一个字母。

    【讨论】:

    • 感谢您为我审阅此内容。我是一名 Python 新手学习者,像您这样的专业 Python 程序员的反馈对我来说非常有价值。
    【解决方案2】:

    您可以将数据存储在列表中,也可以使用以下代码删除重复的 url:

    解析数据 = []

    数据 = {}

    如果没有(d['url'] == data['url'] for d in data):

       parsedData.append(data)
    

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多