Loading...
Xzahn avatar Xzahn 34 Точки

Scrapping динамично генериран HTML с Python?

Здравейте, 

Пиша един скрипт, който трябва да автоматизира разни неща от работата ми. Трябва да минe през HTML-а на една страница, да извлече определена информация и да я напълни в един .xlsx файл. Сложното е, че страницата мога да я достъпя само от работния компютър и дори тогава трябва да си въведа логин информацията. След много главоблъсканица научках, че се използва NTLM протокол и успях да се свържа. Поне така си мисля, понеже request-а връща код 200. Проблемът е, че вместо html-a, който ми трябва, получавам 2000 реда от JS и други подобни благинки. Тоест получавам това, което се вижда като дам View Source в браузъра, а не мен ми трябва това, което се вижда като дам Inspect Element. Възможно ли е това и какво бъркам? 

import requests
import datetime
from bs4 import BeautifulSoup
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
from openpyxl.styles import PatternFill
from requests_ntlm import HttpNtlmAuth

url = "http://top-secrect.com/"

# usern = input("User: ")
# usern = "DOMAIN\\" + usern
# print(usern)
# pass = input("Pass: ")

user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'}

html = requests.get(url, headers=user_agent, auth=HttpNtlmAuth('DOMAIN\\pesho', 'peshoepich'))
print(html.status_code) # 200
print(html.text) # JS code


soup = BeautifulSoup(html.text, "html5lib")

 

Това е начина, по който достъпвам страницата. 

П.С. Не знам дали е от значение, но кода е писан с Python 3.5.2, а го изпълнявам от portable Python 2.7.12. 

1
Python 20/09/2016 09:34:10
netherblood avatar netherblood 95 Точки
Best Answer

Въобще не съм сигурен за какво става въпрос и може да казвам голяма глупост, но това не ти ли обяснява проблема?
http://stackoverflow.com/a/26393257/3218627

1
21/09/2016 11:01:56
Xzahn avatar Xzahn 34 Точки

Изглежда точно това. Големи благодарности! 

0
Kostadin123 avatar Kostadin123 21 Точки

Здравей,

Аз бих използвал Selenium в твоя случай, но не знам дали ти е проблем да имаш отворен прозорец в background-a. Ще ти спести доста код и е лесен за използване. Ако искаш да разбереш повече за Selenium пиши.

1
20/09/2016 23:45:50
Xzahn avatar Xzahn 34 Точки

Не съм го чувал, но ми стана интересно. 

0
Kostadin123 avatar Kostadin123 21 Точки

Пиши в google има доста документация и примери. Ако имаш нещо неясно, някакъв проблем или запънка в кода кажи.

1
21/09/2016 00:14:27
Xzahn avatar Xzahn 34 Точки

Подкарах я гадинката. Благодаря за отговорите!

0
dead4y avatar dead4y 62 Точки

Малко съм Late for the party, но разгледай https://addons.mozilla.org/en-US/firefox/addon/imacros-for-firefox/ . Представлява добавка за Firefox, която ти позволява да автоматизираш браузъра.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.