2017-02-19 8 views
1

Я соскабливаю страницу форума для сообщений и соответствующих ссылок с помощью BeautifulSoup.Подготовка строки к выходу BeautifulSoup scrape

Ссылки на страницу, которую я хочу, находятся в форме r"xx/res/[0-9]{5}.html$".

До сих пор так хорошо находили их в моем объекте BeautifulSoup со следующим форматом связи, когда я print: /xx/res/83071.html.

Теперь я хочу добавить доменное имя 'http://website.com' к каждому результату и использовать полный URL-адрес в качестве основы для дальнейшего соскабливания.

Мой успешный код выглядит следующим образом:

url = 'http://website.com/xx/index.html' 
res = urlopen(url) 
soup = BeautifulSoup(res, 'html.parser') 

links = soup.select('a',{'href':re.compile(r"xx/res/[0-9]{5}.html$")}) 

for l in links: 
    print(l['href']) 

В качестве примера, следующий выводится на консоль:

  • /xx/res/83071.html
  • /хх/Рез/81813.html
  • /xx/res/92014.html
  • /xx/res/92393.html

Надеемся на помощь в правильном синтаксисе, чтобы связать добавленную строку с выходом.

Спасибо.

ответ

0

Это будет работать для вас: -

url = 'http://website.com/xx/index.html' 
res = urlopen(url) 
soup = BeautifulSoup(res, 'html.parser') 

links = soup.select('a',{'href':re.compile(r"xx/res/[0-9]{5}.html$")}) 

for l in links: 
    print ('http://website.com'+l['href']) 
+0

Спасибо, оцените. – runDiomedes

+0

@runDiomedes Если вы считаете, что это работает для вас, вы должны принять его, щелкнув по правой кнопке button.Thanks !! –

0

Существует несколько способов сделать это. Мне лично нравится метод string.format.

магазин базового URL:

xx = 'base_url' 

ваша печать линия будет:

print('/{}/{}'.format(xx, l['href'])) 

где {} заменяется на .format вместо этого иметь переменный, питающую в параметры.

+0

Brilliant, спасибо. Я дам ему вихрь, как только ребенок ляжет спать! – runDiomedes

+0

Np, дайте мне знать, как это происходит. =) –