2015-02-13 4 views
0

Мне нужно пролить некоторую информацию на https://hasjob.co/, я могу очистить некоторую информацию, пройдя страницу входа и очистить, как обычно, но большая часть информации генерируется Javascript только тогда, когда u прокрутите вниз в нижней части страницы.Скремблирование созданной javascript страницы с использованием Python

Любое решение с использованием python ??

import mechanize 
import cookielib 
from bs4 import BeautifulSoup 
import html2text 

import pprint 

job = [] 

# Browser 
br = mechanize.Browser() 

# Cookie Jar 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 

# Browser options 
br.set_handle_equiv(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

br.addheaders = [('User-agent', 'Chrome')] 

# The site we will navigate into, handling it's session 
br.open('https://auth.hasgeek.com/login') 

# View available forms 
##for f in br.forms(): 
## print f 

# Select the second (index one) form (the first form is a search query box) 
br.select_form(nr=1) 

# User credentials 
br.form['username'] = 'username' 
br.form['password'] = 'pass' 

br.submit() 

##print(br.open('https://hasjob.co/').read()) 

r = br.open('https://hasjob.co/') 


soup = BeautifulSoup(r) 


for tag in soup.find_all('span',attrs={'class':'annotation bottom-right'}): 

    p = tag.text 
    job.append(p) 


pp = pprint.PrettyPrinter(depth=6) 

pp.pprint(job) 

ответ

2

По какой-то причине почти никто не замечает, что Hasjob имеет канал Atom и связан с домашней страницей. Чтение структурированных данных из Hasjob с помощью feedparser library так просто, как:

import feedparser 
feed = feedparser.parse('https://hasjob.co/feed') 
for job in feed.entries: 
    print job.title, job.link, job.published, job.content 

Подача преисполненных 30 дней, но это в настоящее время более 800 записей и справедливый бит нагрузки на сервере, поэтому я вырезать до последних 24 часов работы. Если вы хотите регулярно выполнять задания, просто загружайте этот URL не реже одного раза в день.

+0

это удивительно –

0

Вы могли бы взглянуть на модуль питона PyV8, это питон оболочка для Google V8 JavaScript двигателя.

Вы также можете попробовать использовать ghostdriver через селен, см. Пример здесь: Selenium with GhostDriver in Python on Windows. С селеном у вас есть возможность запускать визуальный экземпляр браузера в Firefox или Chrome (через хромированный реверс), в то время как вы получаете работу, а затем переключитесь на PhantomJS (браузер без окон), когда ваш скребок работает. Обратите внимание, что создание полного экземпляра браузера является, возможно, полным излишеством, хотя оно действительно зависит от того, что вы делаете. Если вы не используете его слишком часто, я думаю, это нормально, но обычно селен используется для проверки браузера, а не для очистки.

Смежные вопросы