2013-12-18 3 views
0

Недавно я написал скрипт python для синтаксического анализа определенной строки с веб-страницы. Этот код работает отлично, но когда я запускаю его, он загружает и записывает файл «.php» на рабочем каталоге:как читать и анализировать html-файл без записи на диск

#!/usr/bin/env python 
import wget 
import re 
from HTMLParser import HTMLParser 
import tempfile 
url = "http://tuberculist.epfl.ch/quicksearch.php?gene+name=0009&submit=Search#sequence" 
filname = wget.download(url) 
a = open(filname,'r') 
b = a.readlines() 
f = "|Rv0009|" 
for c in b: 
    if f in c: 
     pattern = re.compile("> >.+<br /></") 
     z = pattern.findall(c) 
     print z 

Какие изменения я должен сделать так, чтобы не писать файл, он будет анализировать нужную строку.

+1

Вы можете использовать модуль 'urllib2' (или модуль [request] (http://requests.readthedocs.org/en/latest/), если он у вас есть), чтобы загрузить содержимое страницы в переменную в памяти. –

+0

@qwrrty Спасибо, что он работает отлично. – user2935002

ответ

2

Несколько замечаний:

  • urllib.urlopen(url) даст вам файл-подобный объект и ничего на диске не пишут.
  • Ваш код импортирует 2 модули (HTMLParser и tempfile), которые он не использует. Избавьтесь от импорта.
  • #sequence часть вашего URL-адреса никогда не предоставляется серверу (это часть спецификации HTTP). Вы можете это вытащить.
  • Вы используете регулярные выражения для синтаксического анализа HTML. По мере того, как ваш прецедент осложняется, он приведет вас к боли и страданиям. Вместо этого используйте вместо этого lxml.html (http://lxml.de/lxmlhtml.html) или BeautifulSoup (http://www.crummy.com/software/BeautifulSoup/).
Смежные вопросы