Web Scraper - 在输出中获得重复

时间:2015-05-04 08:57:59

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

我是Python新手,只是尝试编写一些程序的编码技巧

我在Python 2.7中编写了以下程序,以便从目录中获取配置文件网址 - 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

2 个答案:

答案 0 :(得分:2)

基本上你的代码还可以。您可能会获得大量重复链接,因为目录结果的目的不仅是医生姓名中的第一个字母,还包括公司标题或其他重要数据库字段中的第一个字母。

答案 1 :(得分:2)

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

parsedData = []

data = {}

如果没有(d ['url'] ==数据['url']用于数据中的d):

   parsedData.append(data)