Я хочу применить строковые манипуляции для веб-страницы, как я сделал бы с локальным обычным файлом построчно, например:
save = []
ins = open("my_file.html", "r")
for line in ins:
if "/html/" in line and "thumbs" in line:
print(line)
Однако, когда я пытаюсь взять непосредственно веб-страницу и затем преобразовать ее в utf-8, я больше не могу анализировать построчно, вот мой код:
fp = urllib.request.urlopen(base + ".html")
mystr = fp.read()
mystr = mystr.decode("utf-8")
for line in mystr:
if "/html/" in line and "thumbs" in line:
print(line)
Так что же я здесь делаю не так, это то, как я декодирую страницу после ее получения, библиотеку, которую я использую, то, как я использую свою строку или что-то еще?
Вот результат cat my_file.html | head
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-4477008-1']);
_gaq.push(['_trackPageview']);
(function() {
2 ответа
Так что я делаю не так здесь
Итерирование по объекту файла дает вам строки файла, но итерирование по строке дает вам отдельные символы (как строки длины 1).
Вам нужно будет разбить строку обратно на строки самостоятельно, например, с .splitlines()
.
Я бы использовал BeautifulSoup для выполнения этой задачи.
Вот пример загрузки локального HTML-файла:
from bs4 import BeautifulSoup
import re
url = "C:\\my_folder\\my_file.html"
page = open(url)
soup = BeautifulSoup(page.read())
divs = soup.find_all('div', {'class' : 'example'})
for div in divs:
print (div)
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.