Чтобы предисловие, я начинаю питонов, и это мой первый раз, используя BeautifulSoup. Любой вход очень приветствуется.Как я могу лучше всего изолировать 2 разных немаркированных фрагмента html, используя красивый суп для печати в CSV?
Я пытаюсь очистить все названия компаний и адреса электронной почты от this site. Существует три слоя ссылок для прокрутки (список алфавитов с разбивкой по страницам -> Список компаний по букве -> Страница сведений о компании), и я впоследствии распечатал их на csv.
До сих пор я смог изолировать алфавитный список ссылок с помощью кода ниже, но я застреваю при попытке изолировать разные страницы компании, а затем извлекаю имя/адрес электронной почты из немеченого html.
import re
import urllib2
from bs4 import BeautifulSoup
page = urllib2.urlopen('http://www.indiainfoline.com/Markets/Company/A.aspx').read()
soup = BeautifulSoup(page)
soup.prettify()
pattern = re.compile(r'^\/Markets\/Company\/\D\.aspx$')
all_links = []
navigation_links = []
root = "http://www.indiainfoline.com/"
# Finding all links
for anchor in soup.findAll('a', href=True):
all_links.append(anchor['href'])
# Isolate links matching regex
for link in all_links:
if re.match(pattern, link):
navigation_links.append(root + re.match(pattern, link).group(0))
navigation_links = list(set(navigation_links))
company_pages = []
for page in navigation_links:
for anchor in soup.findAll('table', id='AlphaQuotes1_Rep_quote') [0].findAll('a',href=True):
company_pages.append(root + anchor['href'])
Большое спасибо, это было очень полезно! Я продолжал пытаться вытащить электронные письма, используя номер/порядок таблицы, но это может стать проблемой, если они когда-либо меняют сайт. – user3093445
@ пользователь3093445 добро пожаловать! – PepperoniPizza