我正在尝试从此页面抓取信息: http://www.repertoireconservatoires.fr/repertoire/?instrument=®ion=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=®ion=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 我已经使用了很多搜索功能来获取这段代码,但我找不到解决方案。
非常感谢!
答案 0 :(得分:2)
对不起,我只是非常愚蠢,这是解决方案:
url = 'http://www.repertoireconservatoires.fr/repertoire/?
instrument=®ion=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
我只是填写密码,然后提交,而不是在下拉菜单中输入任何值,所以我得到空的结果。 谢谢你试图帮助,我的坏。 我很高兴我弄清楚它虽然花了我太多时间