在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python3爬百度貼吧遇到ajax渲染和無限加載的困境?

python3爬百度貼吧遇到ajax渲染和無限加載的困境?

希望得到解決的問題:
一、如何通過requests獲取目標地址的樓層號信息。
二、采用selenium+chrome方式獲取源碼,如何解決無限加載困境,并獲得含樓層號信息的源碼
請親測后回答,不要紙上談兵。

目標地址:
https://tieba.baidu.com/p/558...
目標任務(wù):采集目標地址所在貼的樓層號與昵稱保存為字典以供使用。
采用requests方式請求到的源碼中不包含樓層號(1樓,2樓,5樓等)信息,此為任務(wù)需要采集的字段,如何獲取到帶樓層號信息的源碼?估計該地址使用了ajax渲染,直接requests獲取不到,
而同樣是百度貼吧,此貼(https://tieba.baidu.com/p/483...)則能使用requests請求到含樓層號信息的源碼,為了使腳本更具兼容性,只好使用selenium+chrome方式,結(jié)果在get該地址時出現(xiàn)無限加載的困境,試圖采用如下方式來停止頁面無限加載以繼續(xù)運行代碼:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()
# 設(shè)定頁面加載限制時間
driver.set_page_load_timeout(5)
driver.maximize_window()

try:
    driver.get('http://tieba.baidu.com/p/5580899300')
except:  
    print('time out after 5 seconds when loading page')
    driver.execute_script('window.stop()')
print(driver.page_source)
driver.quit()

結(jié)果執(zhí)行到下面語句時出錯

driver.execute_script('window.stop()')

錯誤信息如下:

time out after 5 seconds when loading page
Traceback (most recent call last):  File "C:\Users\Administrator\.vscode\extensions\ms-python.python-2018.1.0\pythonFiles\PythonTools\visualstudio_py_launcher_nodebug.py", line 74, in run
    _vspu.exec_file(file, globals_obj)
  File "C:\Users\Administrator\.vscode\extensions\ms-python.python-2018.1.0\pythonFiles\PythonTools\visualstudio_py_util.py", line 119, in exec_file
    exec_code(code, file, global_variables)
  File "C:\Users\Administrator\.vscode\extensions\ms-python.python-2018.1.0\pythonFiles\PythonTools\visualstudio_py_util.py", line 95, in exec_code
    exec(code_obj, global_variables)
  File "d:\XXX\XXX\sf.py", line 13, in <module>
    driver.execute_script('window.stop()')
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 627, in execute_script
    'args': converted_args})['value']
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout
  (Session info: chrome=64.0.3282.140)
  (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 6.1.7601 SP1 x86_64)
回答
編輯回答
汐顏

我看到每一層樓的信息都有的呀

2017年3月22日 22:32
編輯回答
久舊酒

有的時候找錯方向也是挺悲催的(親測,沒有紙上談兵)

# coding: utf-8

from __future__ import unicode_literals

import requests
import json
from pyquery import PyQuery as Q

r = requests.get('https://tieba.baidu.com/p/5580899300')
for _ in Q(r.text)('div.l_post_bright'):
    d = json.loads(Q(_).attr('data-field'))
    print d['author']['user_name'], d['content']['post_no']
2017年3月1日 00:52
編輯回答
病癮

紙上談兵》》》每個class=l_post j_l_post l_post_bright 的div塊是一個樓,把他用解析庫循環(huán)出來

2018年2月15日 10:18