Я хочу применить строковые манипуляции для веб-страницы, как я сделал бы с локальным обычным файлом построчно, например:
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) включите его в теги.