使用mechanize / selenium抓取网站时,html中的内容丢失

时间:2017-08-25 10:28:20

标签: python html selenium web-crawler mechanize

我正在尝试从此页面抓取信息: http://www.repertoireconservatoires.fr/repertoire/?instrument=&region=67%2C68&etablissment_type=

使用我拥有的所有工具(beautifulSoup,mechanize,selenium)并购买了一天的内容访问权限,我无法获得浏览器源代码中显示的完整HTML页面。 这是它在chrome中的样子

<!-- featured news area on homepage template if applied -->
    <div class="latest-news-homepage" role="complementary">

        <div class="section-inner-container">
    <div class="archive-wrapper">

        <!-- si:resultat -->
            <h2 class="nb_resultats">132 établissements trouvés</h2>                        
                <h3 class="archive-title">Liste des établissements 
        correspondant à votre recherche :</h3>
                <ul class="archive-post-list">
        <!-- repeat:repertoire -->

        [...]

        <!-- /repeat:repertoire -->

        <!-- /si:resultat -->

                        </ul>
                    </div>  
            </div>

        </div>
        <!-- /. end of featured-news container -->  

这就是我从机械化或硒中得到的回应:

<!-- featured news area on homepage template if applied -->
    <div class="latest-news-homepage" role="complementary">

            <div class="section-inner-content">

<div class="archive-wrapper"> 



                </div>  

        </div>

    </div>
    <!-- /. end of featured-news container -->

因此'archive-wrapper'类中没有任何内容(不确定这里的术语)。 我从评论中得到的结果似乎是隐瞒内容,但我真的不知道是什么,也不知道为什么。 我对编码非常不熟悉,但这就是我想出的:

import mechanize
import cookielib

url = 'http://www.repertoireconservatoires.fr/repertoire/?instrument=&region=67%2C68&etablissment_type=&page=0'

cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_cookiejar(cj)
br.open(url)
br.select_form(nr=0)
br.form['ticket'] = PASSWORD
br.submit()
print br.response().read()

这与selenium一起,希望浏览器仿真就足够了:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.PhantomJS()

# submit a login form
username = driver.find_element_by_name('ticket')

username.send_keys(PASSWORD)

username.submit()

print driver.page_source

1天访问代码(代码中的PASSWORD)是H2CB-LLL9,它会在几个小时内过期,所以如果有帮助的话...... 希望你能让我脱离这一个:p 我已经使用了很多搜索功能来获取这段代码,但我找不到解决方案。

非常感谢!

1 个答案:

答案 0 :(得分:2)

对不起,我只是非常愚蠢,这是解决方案:

    url = 'http://www.repertoireconservatoires.fr/repertoire/?
        instrument=&region=67%2C68&etablissment_type='
    cj = cookielib.CookieJar()
    br = mechanize.Browser()
    br.set_cookiejar(cj)
    br.open(url)
    br.select_form(nr=0)
    br.form['ticket'] = 'H2CB-LLL9'
    br.submit()
    br.select_form(nr=0)
    br.form['region'] = ['67,68']
    br.submit()
    co = br.response().read()
    print co

我只是填写密码,然后提交,而不是在下拉菜单中输入任何值,所以我得到空的结果。 谢谢你试图帮助,我的坏。 我很高兴我弄清楚它虽然花了我太多时间