Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2013 17:11:54

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Beautiful Soup 4: выборка

Доброго времени суток. Возникла проблема: понадобился парсер, который выбирает вакансии и отправляет в xlsx файл. Собственно, код:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
from urllib.request import urlopen, ProxyHandler
# import urllib.request
import xlsxwriter
with open('adress.txt', 'r') as file:
    html = file.read()
    soup = BeautifulSoup(html)
for i in soup.findAll('a'): #
    # print(i.string, i['href'])
    html_doc = urlopen(i['href']).read()
    soup = BeautifulSoup(html_doc)
    z = soup.find('div', 'entry-content') # Ищем теги P внутри DIV CLASS=entry-content
    result = z.findAll('p')
    workbook = xlsxwriter.Workbook('{0}.xlsx'.format(i.string)) # Создаем одноименный файл
    worksheet = workbook.add_worksheet()
    worksheet.set_column('A:A', 7) # Ширина строки A
    worksheet.set_column('B:B', 50) # Ширина B
    worksheet.write('B1', i.string)
    sl = 3
    for num in result:
            worksheet.write('A{0}'.format(sl), result.index(num)+1) 
            worksheet.write('B{0}'.format(sl), str(num)[3:-3])
            sl += 1

Не обращайте внимание на частичный говнокод. А возможно и не частичный. Обычный скрипт на раз.

Возникла проблема. Начали попадаться скрипты JavaScript:

// --></script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-7219099348736807";
/* Баннер */
google_ad_slot = "9932539218";
google_ad_width = 468;
google_ad_height = 60;
// --></script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></p>
<p>ГЕЛИОС: 5-08-25</p>
<p>ГЕЛИОС: 6-22-57, мкрн. 26</p>
<p>КРАФТ &amp; К: 5-98-51, Топоркова 21А</p>
<p>РПК: Корчагина 149, по Транспартной</p>
<p>РТК: 7-43-57, по Качарской</p>
<p>РТК: 6-74-55, р-н МЖК</p>
<p>РТК: 7-42-46, по объездной</p>
<p>РТК: 7-54-66, р-н УПП</p>
<p>GLOBALCAR: 4-43-37</p>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-7219099348736807";
/* Прямоугольник */
google_ad_slot = "7677102158";
google_ad_width = 300;
google_ad_height = 250;[quote][/quote]

Как исключить такие скрипты? Фичи, типа
if str.find('script') != -1: bla-bla-bla

не помогают

Офлайн

#2 Дек. 12, 2013 21:44:30

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Beautiful Soup 4: выборка

Перед тем как скармпливать HTML-код страницы в BeautifulSoup, можно регекспом выразеать скрипты. А вообще лучше используйте lxml для парсинга HTML - он менее глючный, чем BeautifulSoup

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version