Удаление повторяющихся URL-адресов Python BeautifulSoup с помощью set () разбивает URL-адреса - PullRequest
0 голосов
/ 23 февраля 2019

В Python я использовал BeautifulSoup для очистки URL-адресов с веб-сайта для проекта, и все прекрасно работает, пока я не попытаюсь удалить дубликаты, передав теги в заданный объект.Теги «раздуты».Вот мой код и пример результатов печати. ​​

file = open('parsed_data.csv', 'w')

for link in soup.find_all('a', attrs={'href': re.compile("^http")}):

    soup_link = str(link)
    if soup_link.endswith('/') or soup_link.endswith('#'):
        soup_link = soup_link[-1]

    soup_link_unique = str(set(soup_link))

    print (soup_link)
    print (soup_link_unique)

    file.write(soup_link_unique)
    file.flush()
    file.close
```
Before passing into set object:
<a href="https://www.census.gov/en.html" onfocus="CensusSearchTypeahead.onSearchFocusBlur(false);" tabindex="2">
<img alt="United States Census Bureau" class="uscb-nav-image" src="https://www.census.gov/etc/designs/census/images/USCENSUS_IDENTITY_SOLO_White_2in_TM.svg" title="U.S. Census Bureau"/>
</a>

After passing into a set object:
{'I', 'S', '\n', 'C', '>', 'u', '"', '-', 'i', 'Y', 'L', 'M', 'p', '.', 'c', ')', 'B', '2', 't', 'N', '<', ' ', 'b', 'w', 'e', 'E', '/', 'O', ':', 'U', 'x', 'o', 'W', 'f', '(', 'l', 'D', 'F', 'g', 'd', '_', '=', 'n', 's', 'h', 'a', 'T', 'v', 'r', ';', 'm', 'y'}

1 Ответ

0 голосов
/ 23 февраля 2019

Создайте набор перед циклом for и добавьте в него новые элементы, используя метод add():

soup_link_unique = set()

for link in soup.find_all('a', attrs={'href': re.compile("^http")}):    
    soup_link = str(link)
    if soup_link.endswith('/') or soup_link.endswith('#'):
        soup_link = soup_link[-1]   
    soup_link_unique.add(soup_link)

Пример:

my_set = set('ABCDE')
print(my_set)
# {'E', 'D', 'C', 'B', 'A'}

против

my_set = set()
my_set.add('ABCDE')
print(my_set)
# {'ABCDE'}
...