Софтуерно Инженерство
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 94 Точки
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 64 Точки

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

1