Hướng dẫn python selenium get har file - python selen lấy har tập tin

Mục tiêu: Tôi muốn chạy một tập lệnh Selenium Python thông qua Browsermob-Proxy, sẽ nắm bắt và xuất ra một tập tin thu được. I want to run a Selenium Python script through BrowserMob-Proxy, which will capture and output a HAR file capture.

Vấn đề: Tôi có một tập lệnh Python chức năng (rất cơ bản) (hiển thị bên dưới). Khi nó được thay đổi để sử dụng Browsermob-Proxy để bắt HAR, tuy nhiên, nó đã thất bại. Dưới đây tôi cung cấp hai tập lệnh khác nhau mà cả hai đều thất bại, nhưng vì những lý do khác nhau (chi tiết được cung cấp sau đoạn mã). I have a functional (very basic) Python script (shown below). When it is altered to utilize BrowserMob-Proxy to capture HAR however, it fails. Below I provide two different scripts that both fail, but for differing reasons (details provided after code snippets).

Browsermob-Proxy Giải thích: Như đã đề cập trước đây, tôi đang sử dụng cả 0,6.0 và 2.0-beta-8. Lý do cho điều này là A) Lightbody (Trình thiết kế chính của BMP) gần đây đã chỉ ra rằng bản phát hành mới nhất của anh ấy (2.0-beta-9) không hoạt động và khuyên người dùng nên sử dụng 2.0-beta-8 thay thế và B) từ những gì tôi có thể Nói từ việc đọc thông tin khác nhau về trang web/stackoverflow là 0.6.0 (thu được thông qua PIP) được sử dụng để thực hiện các cuộc gọi đến máy khách.py/server.py, trong khi 2.0-beta-8 được sử dụng để bắt đầu máy chủ. Thành thật mà nói, điều này làm tôi bối rối. Tuy nhiên, khi nhập máy chủ của BMP, nó yêu cầu một tệp hàng loạt (.bat) để bắt đầu máy chủ, không được cung cấp trong 0,6.0, nhưng với 2.0 beta-8 ... nếu có ai có thể làm sáng tỏ khu vực này của khu vực này của Sự nhầm lẫn (tôi nghi ngờ đó là gốc rễ của những vấn đề của tôi được mô tả dưới đây), sau đó tôi sẽ được đánh giá cao nhất. As mentioned before, I am using both 0.6.0 AND 2.0-beta-8. The reasoning for this is that A) LightBody (lead designer of BMP) recently indicated that his most current release (2.0-beta-9) is not functional and advises users to use 2.0-beta-8 instead and B) from what I can tell from reading various site/stackoverflow information is that 0.6.0 (acquired through PIP) is used to make calls to the Client.py/Server.py, whereas 2.0-beta-8 is used to initiate the Server. To be honest, this confuses me. When importing BMP's Server however, it requires a batch (.bat) file to initiate the server, which is not provided in 0.6.0, but is with 2.0-beta-8...if anyone can shed some light on this area of confusion (I suspect it is the root of my problems described below), then I'd be most appreciative.

Thông số kỹ thuật phần mềm:

  • Hệ điều hành: Windows 7 (64x) - Chạy trong VirtualBox
  • Trình duyệt: Firefox (32.0.2)
  • Ngôn ngữ kịch bản: Python (2.7.8)
  • Trình duyệt web tự động: Selenium (2.43.0) - Được cài đặt qua PIP
  • Browsermob-Proxy: 0.6.0 và 2.0-beta-8-Xem giải thích bên dưới

Selenium script (tập lệnh này hoạt động):

"""This script utilizes Selenium to obtain the Google homepage"""
from selenium import webdriver

driver = webdriver.Firefox()       # Opens FireFox browser.
driver.get('https://google.com/')  # Gets google.com and loads page in browser.

driver.quit()                      # Closes Firefox browser

Kịch bản này thành công trong việc chạy và không tạo ra bất kỳ lỗi nào. Nó được cung cấp cho mục đích minh họa để chỉ ra nó hoạt động trước khi thêm logic BMP.

Script alpha với BMP (không hoạt động):

"""Using the same functional Selenium script, produce ALPHA_HAR.har output"""
from browsermobproxy import Server
server = Server('C:\Users\Matt\Desktop\\browsermob-proxy-2.0-beta-8\\bin\\browsermob-proxy')
server.start()
proxy = server.create_proxy()

from selenium import webdriver
driver = webdriver.Firefox()           # Opens FireFox browser.

proxy.new_har("ALPHA_HAR")             # Creates a new HAR
driver.get("https://www.google.com/")  # Gets google.com and loads page in browser.
proxy.har                              # Returns a HAR JSON blob

server.stop()

Mã này sẽ thành công trong việc chạy tập lệnh và sẽ không tạo ra bất kỳ lỗi nào. Tuy nhiên, khi tìm kiếm toàn bộ ổ cứng của tôi, tôi không bao giờ thành công trong việc định vị alpha_har.har.

Script Beta với BMP (không hoạt động):

"""Using the same functional Selenium script, produce BETA_HAR.har output"""
from browsermobproxy import Server
server = Server("C:\Users\Matt\Desktop\\browsermob-proxy-2.0-beta-8\\bin\\browsermob-proxy")
server.start()    
proxy = server.create_proxy()

from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)

proxy.new_har("BETA_HAR")             # Creates a new HAR
driver.get("https://www.google.com/") # Gets google.com and loads page in browser.
proxy.har                             # Returns a HAR JSON blob

server.stop()

Mã này được lấy từ http://browsermob-proxy-py.readthedocs.org/en/latest/. Khi chạy mã trên, Firefox sẽ cố gắng lấy Google.com, nhưng sẽ không bao giờ thành công trong việc tải trang. Cuối cùng, nó sẽ hết thời gian mà không tạo ra bất kỳ lỗi nào. Và beta_har.har không thể được tìm thấy ở bất cứ đâu trên ổ cứng của tôi. Tôi cũng đã nhận thấy rằng, khi cố gắng sử dụng trình duyệt này để truy cập bất kỳ trang web nào khác, nó sẽ không tải tương tự (tôi nghi ngờ điều này là do proxy không được cấu hình đúng).

unread,

Tìm dữ liệu bạn muốn trích xuất ..9/27/14

đến

Viết mã ..

Goal:

I want to run a Selenium Python script through BrowserMob-Proxy, which will capture and output a HAR file capture.

Vấn đề: Tôi có một tập lệnh Python chức năng (rất cơ bản) (hiển thị bên dưới). Khi nó được thay đổi để sử dụng Browsermob-Proxy để nắm bắt HAR, nó đã thất bại. Dưới đây tôi cung cấp hai tập lệnh khác nhau mà cả hai đều thất bại, nhưng vì những lý do khác nhau (chi tiết được cung cấp trước đoạn mã).
I have a functional (very basic) Python script (shown below). When it is altered to utilize BrowserMob-Proxy to capture a HAR however, it fails. Below I provide two different scripts that both fail, but for differing reasons (details provided before code snippets).

Thông số kỹ thuật phần mềm:

  • Hệ điều hành: Windows 7 (64x) - Chạy trong VirtualBox
  • Trình duyệt: Firefox (32.0.2)
  • Ngôn ngữ kịch bản: Python (2.7.8)
  • Trình duyệt web tự động: Selenium (2.43.0) - Được cài đặt qua PIP
  • Browsermob-Proxy: 0.6.0 và 2.0-beta-8-Xem giải thích bên dưới

Browsermob-Proxy Giải thích: Như đã đề cập trước đây, tôi đang sử dụng cả 0,6.0 và 2.0-beta-8. Lý do cho điều này là A) Lightbody gần đây đã chỉ ra rằng bản phát hành mới nhất của anh ấy (2.0-beta-9) không có chức năng và khuyên người dùng nên sử dụng 2.0-beta-8 thay thế và B) từ những gì tôi có thể nói từ việc đọc các trang web khác nhau/ Thông tin StackOverflow là 0,6.0 (thu được thông qua PIP) được sử dụng để thực hiện các cuộc gọi đến máy khách.py/server.py, trong khi 2.0-beta-8 được sử dụng để bắt đầu máy chủ. Thành thật mà nói, điều này làm tôi bối rối. Tuy nhiên, khi nhập máy chủ của BMP, nó yêu cầu một tệp hàng loạt (.bat) để bắt đầu máy chủ, không được cung cấp trong 0,6.0, nhưng với 2.0 beta-8 ... nếu có ai có thể làm sáng tỏ khu vực này của khu vực này của Sự nhầm lẫn (tôi nghi ngờ đó là gốc rễ của những vấn đề của tôi được mô tả dưới đây), sau đó tôi sẽ được đánh giá cao nhất.
As mentioned before, I am using both 0.6.0 AND 2.0-beta-8. The reasoning for this is that A) LightBody recently indicated that his most current release (2.0-beta-9) is not functional and advises users to use 2.0-beta-8 instead and B) from what I can tell from reading various site/stackoverflow information is that 0.6.0 (acquired through PIP) is used to make calls to the Client.py/Server.py, whereas 2.0-beta-8 is used to initiate the Server. To be honest, this confuses me. When importing BMP's Server however, it requires a batch (.bat) file to initiate the server, which is not provided in 0.6.0, but is with 2.0-beta-8...if anyone can shed some light on this area of confusion (I suspect it is the root of my problems described below), then I'd be most appreciative.

Tập lệnh selen (tập lệnh này hoạt động): & nbsp; Kịch bản này thành công trong việc chạy và không tạo ra bất kỳ lỗi nào. Nó được cung cấp cho mục đích minh họa để chỉ ra nó hoạt động trước khi thêm logic BMP.
This script succeeds in running and does not produce any errors. It is provided for illustrative purposes to indicate it works before adding BMP logic.

    """This script utilizes Selenium to obtain the Google homepage"""
    from selenium import webdriver

    driver = webdriver.Firefox()       # Opens FireFox browser.
    driver.get('https://google.com/')  # Gets google.com and loads page in browser.

    driver.quit()                      # Closes Firefox browser

Script Alpha với BMP (không hoạt động): Mã này sẽ thành công trong việc chạy tập lệnh và sẽ không tạo ra bất kỳ lỗi nào. Tuy nhiên, khi tìm kiếm toàn bộ ổ cứng của tôi, tôi không bao giờ thành công trong việc định vị alpha_har.har.
This code will succeed in running the script and will not produce any errors. However, when searching the entirety of my hard drive, I never succeed in locating ALPHA_HAR.har.

    """Using the same functional Selenium script, produce ALPHA_HAR.har output"""
    from browsermobproxy import Server
    server = Server('C:\Users\Matt\Desktop\\browsermob-proxy-2.0-beta-8\\bin\\browsermob-proxy')
    server.start()
    proxy = server.create_proxy()

    from selenium import webdriver
    driver = webdriver.Firefox()           # Opens FireFox browser.

    proxy.new_har("ALPHA_HAR")             # Creates a new HAR
    driver.get("https://www.google.com/")  # Gets google.com and loads page in browser.
    proxy.har                              # Returns a HAR JSON blob

    server.stop()

Script Beta với BMP (không hoạt động): Mã này được lấy từ http://browsermob-proxy-py.readthedocs.org/en/latest/. Khi chạy mã dưới đây, Firefox sẽ cố gắng lấy Google.com, nhưng sẽ không bao giờ thành công trong việc tải trang. Cuối cùng, nó sẽ hết thời gian mà không tạo ra bất kỳ lỗi nào. Và beta_har.har không thể được tìm thấy ở bất cứ đâu trên ổ cứng của tôi. Tôi cũng đã nhận thấy rằng, khi cố gắng sử dụng trình duyệt này để truy cập bất kỳ trang web nào khác, nó sẽ không tải tương tự (tôi nghi ngờ điều này là do proxy không được cấu hình đúng).
This code was taken from http://browsermob-proxy-py.readthedocs.org/en/latest/. When running the below code, FireFox will attempt to get google.com, but will never succeed in loading the page. Eventually it will time out without producing any errors. And BETA_HAR.har can't be found anywhere on my hard drive. I have also noticed that, when trying to use this browser to visit any other site, it will similarly fail to load (I suspect this is due to the proxy not being configured properly).

    """Using the same functional Selenium script, produce BETA_HAR.har output"""
    from browsermobproxy import Server
    server = Server("C:\Users\Matt\Desktop\\browsermob-proxy-2.0-beta-8\\bin\\browsermob-proxy")
    server.start()    
    proxy = server.create_proxy()

    from selenium import webdriver
    profile = webdriver.FirefoxProfile()
    profile.set_proxy(proxy.selenium_proxy())
    driver = webdriver.Firefox(firefox_profile=profile)

    proxy.new_har("BETA_HAR")             # Creates a new HAR
    driver.get("https://www.google.com/") # Gets google.com and loads page in browser.
    proxy.har                             # Returns a HAR JSON blob

    server.stop()

Patrick Lightbody

unread,

Ngày 28 tháng 9 năm 2014, 10:54:24 PM9/28/149/28/14

đến

Luôn hạnh phúc khi cố gắng có được một số tình yêu ngẫu nhiên và sự ngưỡng mộ từ người lạ!

Đáng buồn thay, trong trường hợp này, tôi không nghĩ rằng có một tấn tôi có thể nói, vì tôi chỉ đơn giản là không biết Python và tôi không thực sự biết những ràng buộc đó hoạt động như thế nào (chúng được đóng góp bởi người khác).

Những gì tôi biết là API BMP REST, đó là những gì mà Python bao gồm, không viết tệp HAR ở bất cứ đâu. Nó chỉ đơn giản là trả lại JSON qua HTTP. Vì vậy, trừ khi trình bao bọc Python đang viết tệp ở đâu đó, việc tìm kiếm ổ cứng của bạn sẽ luôn vô ích. Gợi ý: Nó không có;)

Bạn đã thử chỉ in ra đầu ra của cuộc gọi proxy.har chưa? :)

Patrick


unread,

Ngày 30 tháng 9 năm 2014, 8:11:54 AM9/30/149/30/14

đến

Luôn hạnh phúc khi cố gắng có được một số tình yêu ngẫu nhiên và sự ngưỡng mộ từ người lạ!

Đáng buồn thay, trong trường hợp này, tôi không nghĩ rằng có một tấn tôi có thể nói, vì tôi chỉ đơn giản là không biết Python và tôi không thực sự biết những ràng buộc đó hoạt động như thế nào (chúng được đóng góp bởi người khác).

Những gì tôi biết là API BMP REST, đó là những gì mà Python bao gồm, không viết tệp HAR ở bất cứ đâu. Nó chỉ đơn giản là trả lại JSON qua HTTP. Vì vậy, trừ khi trình bao bọc Python đang viết tệp ở đâu đó, việc tìm kiếm ổ cứng của bạn sẽ luôn vô ích. Gợi ý: Nó không có;)

Bạn đã thử chỉ in ra đầu ra của cuộc gọi proxy.har chưa? :)

Patrick

Ngày 30 tháng 9 năm 2014, 8:11:54 AM9/30/14

Này Patrick,
    proxy = server.create_proxy() # Creates BM Proxy

Cảm ơn sự hỗ trợ (bắt đầu phễu tình yêu và chầu theo hướng của bạn). & Nbsp; Tôi đã trải nghiệm một chút thời điểm facepalm sau khi đọc văn bản của bạn, vì tôi nhận ra rằng tôi đang đưa ra giả định khủng khiếp rằng proxy.HAR ủng hộ chức năng đó (không nhận ra tôi cần phải viết mã, đặc biệt là đưa ra tất cả các ví dụ & nbsp; hoặc bao gồm điều đó). & nbsp; Sử dụng đề xuất của bạn, tôi đã viết một phụ lục Python nhanh chóng cho trường hợp thử nghiệm Alpha_har trước đó đã chạy thành công và tạo ra đầu ra HAR. & NBSP; Tuy nhiên, nó có vẻ cực kỳ nhẹ cho dữ liệu, ngay cả khi tất cả những gì nó đang làm là tải trang chủ của Google.

Kịch bản "làm việc":
    answer = str(proxy.har) # Returns a HAR JSON blob, converts it to a string, and assigns it to variable "answer"

& nbsp; & nbsp; & nbsp; từ Selenium Nhập WebDriver
    file.write(answer) # Writes to CHARLIE_HAR.har, appending the earlier variable "answer"
    file.close() # Saves and closes CHARLIE_HAR.har

Kết quả "làm việc" kết quả:

& nbsp; & nbsp; & nbsp; s . , u'entries ': []}}

Như bạn có thể thấy từ trên, đầu ra rất nhẹ - có vẻ không đúng. & NBSP; Mặc dù vậy, để đảm bảo, tôi đã tô điểm cho tập lệnh selen trước đó, để nó được chuyển đến Google và thực hiện một truy vấn (hoạt động tốt), sau đó được thêm vào logic BMP để thu thập Har. & NBSP; Do đó, nó & nbsp; sẽ phải & nbsp; tạo thêm dữ liệu. & Nbsp; Kịch bản dưới đây, nhưng thật không may, nó đã lỗi. & NBSP; Dưới đây là thông báo theo dõi lỗi và kết quả là dựa trên proxy.har (logic BMP) - Bạn có thể giúp tôi tìm ra điều này không?

Tập lệnh kiểm tra mới:

& nbsp; & nbsp; & nbsp; "" "" Script selen được sử dụng cùng với BMP để chạy truy vấn trong Google, sau đó ghi lại kết quả HAR trong Charlie_har.har "" "" "

& nbsp; & nbsp; & nbsp; từ Selenium Nhập WebDriver & NBSP; & NBSP; & NBSP; từ selenium.webdriver.common.keys Chìa khóa nhập khẩu
    from selenium.webdriver.common.keys import Keys

& nbsp; & nbsp; & nbsp; từ máy chủ nhập khẩu browsermobproxy & nbsp; & nbsp; & nbsp; Server = Server ('C: \ Users \ Matt \ Desktop \\ Browsermob-Proxy-2.0-Beta-8 \\ bin \\ Browsermob-Proxy')
    server = Server('C:\Users\Matt\Desktop\\browsermob-proxy-2.0-beta-8\\bin\\browsermob-proxy')

& nbsp; & nbsp; & nbsp; server.start () # khởi tạo bmp & nbsp; & nbsp; & nbsp; proxy = server.create_proxy () # Tạo BM Proxy
    proxy = server.create_proxy() # Creates BM Proxy

& nbsp; & nbsp; & nbsp; Driver = WebDriver.firefox () # Mở Trình duyệt Firefox

& nbsp; & nbsp; & nbsp; trình điều khiển.set_window_size (1024, 768) # Đặt kích thước cửa sổ Trình duyệt FF

& nbsp; & nbsp; & nbsp; Element = driver.find_element_by_xpath ('//*[@id = "gbqfq"]') # định vị XPath được liên kết với hộp tìm kiếm Google. & nbsp; & nbsp; & nbsp; Element.Send_Keys ('Cảm ơn vì đã giúp tôi ra ngoài, Patrick!') # Loại "Cảm ơn vì đã giúp tôi, Patrick!" trong hộp tìm kiếm của Google. & nbsp; & nbsp; & nbsp; Element.Send_Keys (Keys.enter) # Nhấn phím "Enter" trong khi ở hộp tìm kiếm Google, do đó nhập các yêu cầu tìm kiếm và tải trang kết quả.
    element.send_keys('Thanks for helping me out, Patrick!') # Types "Thanks for helping me out, Patrick!" in Google search box.
    element.send_keys(Keys.ENTER) # presses the "enter" key while in the Google search box, thus inputting the search requests and loading the results page.

& nbsp; & nbsp; & nbsp; server.stop () # tắt BMP & nbsp; & nbsp; & nbsp; Trả lời = str (proxy.har) # Trả về một blob har json, chuyển đổi nó thành một chuỗi và gán nó cho biến "Trả lời"
    answer = str(proxy.har) # Returns a HAR JSON blob, converts it to a string, and assigns it to variable "answer"

& nbsp; & nbsp; & nbsp; file = open ('delta_har.har', 'w+') # tạo một tệp mới có tên Delta_har.har, nằm trong thư mục nơi tập lệnh được chạy từ & nbsp; & nbsp; & nbsp; file.write (câu trả lời) # ghi vào delta_har.har, nối thêm biến "Trả lời" & nbsp; & nbsp; & nbsp; file.close () # lưu và đóng delta_har.har
    file.write(answer) # Writes to DELTA_HAR.har, appending the earlier variable "answer"
    file.close() # Saves and closes DELTA_HAR.har

Thông báo lỗi tập lệnh kiểm tra mới: thông báo:

& nbsp; & nbsp; & nbsp; TraceBack (cuộc gọi gần đây nhất cuối cùng): & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp "test3.py", dòng 21, in & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Trả lời = str (proxy.har) # Trả về một blob har json, chuyển đổi nó thành một chuỗi và gán nó cho biến "Trả lời" & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp "C: \ python27 \ lib \ site-packages \ browsermobproxy \ client.py", dòng 64, trong har & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trả về r.json () & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp "C: \ Python27 \ lib \ site-Packages \ requests \ model.py", dòng 776, trong json & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trả về json.loads (self.text, ** kwargs) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp "C: \ python27 \ lib \ json \ __ init__.py", dòng 338, trong loads & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trả về _default_decoder.decode (s) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp "C: \ Python27 \ lib \ json \ decoder.py", dòng 366, trong giải mã & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; obj, end = self.raw_decode (s, idx = _w (s, 0) .end ()) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp "C: \ Python27 \ lib \ json \ decoder.py", dòng 384, trong Raw_Decode & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; tăng giá trịerror ("không có đối tượng JSON có thể được giải mã") & nbsp; & nbsp; & nbsp; ValueError: Không có đối tượng JSON nào có thể được giải mã
        File "test3.py", line 21, in
            answer = str(proxy.har) # Returns a HAR JSON blob, converts it to a string, and assigns it to variable "answer"
        File "C:\Python27\lib\site-packages\browsermobproxy\client.py", line 64, in har
            return r.json()
        File "C:\Python27\lib\site-packages\requests\models.py", line 776, in json
            return json.loads(self.text, **kwargs)
        File "C:\Python27\lib\json\__init__.py", line 338, in loads
            return _default_decoder.decode(s)
        File "C:\Python27\lib\json\decoder.py", line 366, in decode
            obj, end = self.raw_decode(s, idx=_w(s, 0).end())
        File "C:\Python27\lib\json\decoder.py", line 384, in raw_decode
            raise ValueError("No JSON object could be decoded")
    ValueError: No JSON object could be decoded

Tôi đã chuyển sang web/stackoverflow và đọc rằng các lỗi JSON có xu hướng khá không có ích và tôi nên thử truyền kết quả vào đầu đọc JSON (ví dụ: http://jsonlint.com/) để có ý tưởng tốt hơn về vấn đề gốc. & nbsp; & nbsp; để làm như vậy, tôi đã vào ỨNG DỤNG. ; Tôi không thể giải mã & nbsp; đến định dạng UTF-8 cho đọc JSON, nhưng một bản in thường xuyên dẫn đến điều này cực kỳ ngắn & NBSP; đầu ra (xem bên dưới).

Đầu ra JSON (được lấy trực tiếp từ BMP's Client.py [thay thế "return r.json () bằng" in r "]):

Đó là một phản ứng cực kỳ ngắn. & NBSP; Điều duy nhất xuất hiện trong đầu khi tôi nghĩ rằng phản hồi 200 là mã HTTP cho một trang được tải thành công. & NBSP; Thực tế là không có nhiều thông tin để in khiến tôi tin rằng, vì một số lý do, client.py (đối với BMP) không nắm bắt được tất cả thông tin. & NBSP; Và vì vậy, khi chuyển đổi "" thành JSON, nó không thành công, bởi vì nó không phải là một đầu vào thích hợp để chuyển đổi (lý thuyết hóa ở đây).

Bất kỳ ý tưởng? & NBSP; Nếu thực sự có một vấn đề với khách hàng được cung cấp với BMP, thì tôi sẽ nghĩ những người khác sẽ báo cáo vấn đề này.

Patrick Lightbody

Thanks,Matt
Matt

Ngày 30 tháng 9 năm 2014, 12:03:31 PM9/30/14

unread,

đến9/30/14

Nó không giống như bài kiểm tra của bạn thực sự cấu hình trình duyệt để sử dụng proxy. Đó sẽ là lý do tại sao HAR trống rỗng! Tôi không biết chính xác mã Python sẽ là gì, nhưng điều này được gọi ra trong readme cho java:

Krishnan Mahadevan

Ngày 30 tháng 9 năm 2014, 12:51:52 PM9/30/14

unread,

Patrick là chính xác.9/30/14

Nó không giống như bài kiểm tra của bạn thực sự cấu hình trình duyệt để sử dụng proxy. Đó sẽ là lý do tại sao HAR trống rỗng! Tôi không biết chính xác mã Python sẽ là gì, nhưng điều này được gọi ra trong readme cho java:

Matt,

Krishnan Mahadevan

Ngày 30 tháng 9 năm 2014, 12:51:52 PM9/30/14

Patrick là chính xác.

Từ mã làm việc của bạn:

Kịch bản "làm việc":

& nbsp; & nbsp; & nbsp; từ Selenium Nhập WebDriver

& nbsp; & nbsp; & nbsp; từ máy chủ nhập khẩu browsermobproxy
    proxy = server.create_proxy() # Creates BM Proxy

Server = Server ('C: \ Users \ Matt \ Desktop \\ Browsermob-Proxy-2.0-Beta-8 \\ bin \\ Browsermob-Proxy')

& nbsp; & nbsp; & nbsp; server.start () # khởi tạo bmp & nbsp; & nbsp; & nbsp; proxy = server.create_proxy () # Tạo BM Proxy
    answer = str(proxy.har) # Returns a HAR JSON blob, converts it to a string, and assigns it to variable "answer"

& nbsp; & nbsp; & nbsp; Driver = WebDriver.firefox () # Mở Trình duyệt Firefox
    file.write(answer) # Writes to CHARLIE_HAR.har, appending the earlier variable "answer"
    file.close() # Saves and closes CHARLIE_HAR.har

& nbsp; & nbsp; & nbsp; server.stop () # tắt BMP & nbsp; & nbsp; & nbsp; Trả lời = str (proxy.har) # Trả về một blob har json, chuyển đổi nó thành một chuỗi và gán nó cho biến "Trả lời"

& nbsp; & nbsp; & nbsp; file = open ('Charlie_har.har', 'w+') # tạo một tệp mới có tên Charlie_har.har, nằm trong thư mục nơi tập lệnh được chạy từ & nbsp; & nbsp; & nbsp; file.write (câu trả lời) # viết cho Charlie_har.har, nối thêm biến "Trả lời" & nbsp; & nbsp; & nbsp; file.close () # lưu và đóng Charlie_har.har

Kết quả "làm việc" kết quả:

& nbsp; & nbsp; & nbsp; s . , u'entries ': []}}

from selenium import webdriver
    profile = webdriver.FirefoxProfile()
    profile.set_proxy(proxy.selenium_proxy())
    driver = webdriver.Firefox(firefox_profile=profile)

unread,

Tôi không thấy bạn ràng buộc thông tin máy chủ proxy vào các khả năng của đối tượng WebDriver trước khi sinh ra trình duyệt Firefox.10/1/14

Nó không giống như bài kiểm tra của bạn thực sự cấu hình trình duyệt để sử dụng proxy. Đó sẽ là lý do tại sao HAR trống rỗng! Tôi không biết chính xác mã Python sẽ là gì, nhưng điều này được gọi ra trong readme cho java:

Patrick/Krishnan,

Krishnan Mahadevan

Ngày 30 tháng 9 năm 2014, 12:03:31 PM9/30/14

unread,

đến10/1/14

Nó không giống như bài kiểm tra của bạn thực sự cấu hình trình duyệt để sử dụng proxy. Đó sẽ là lý do tại sao HAR trống rỗng! Tôi không biết chính xác mã Python sẽ là gì, nhưng điều này được gọi ra trong readme cho java:

Krishnan Mahadevan

unread,

Ngày 30 tháng 9 năm 2014, 12:51:52 PM9/30/1410/1/14

Nó không giống như bài kiểm tra của bạn thực sự cấu hình trình duyệt để sử dụng proxy. Đó sẽ là lý do tại sao HAR trống rỗng! Tôi không biết chính xác mã Python sẽ là gì, nhưng điều này được gọi ra trong readme cho java:

Krishnan Mahadevan

Ngày 30 tháng 9 năm 2014, 12:51:52 PM9/30/14
Script Beta:  Before it didn't even run, now it works (just doesn't capture HAR).

Patrick là chính xác.

Từ mã làm việc của bạn:
The error message is the same as before "No JSON object could be decoded", which is related to the "proxy.har" code snippet.  I did the same client.py manipulation to try and see what data it was getting passed and, it was identical, "Response [200]".

unread,

Kịch bản "làm việc":10/1/14

Nó không giống như bài kiểm tra của bạn thực sự cấu hình trình duyệt để sử dụng proxy. Đó sẽ là lý do tại sao HAR trống rỗng! Tôi không biết chính xác mã Python sẽ là gì, nhưng điều này được gọi ra trong readme cho java:

Krishnan Mahadevan

Ngày 30 tháng 9 năm 2014, 12:51:52 PM9/30/14

Patrick là chính xác.

unread,

Từ mã làm việc của bạn:10/1/14

Nó không giống như bài kiểm tra của bạn thực sự cấu hình trình duyệt để sử dụng proxy. Đó sẽ là lý do tại sao HAR trống rỗng! Tôi không biết chính xác mã Python sẽ là gì, nhưng điều này được gọi ra trong readme cho java:

Krishnan Mahadevan

Ngày 30 tháng 9 năm 2014, 12:51:52 PM9/30/14

Har sản xuất kịch bản Python:

   

"" "SELENIUM SCRIPT được sử dụng cùng với BMP để chạy truy vấn trong Google, sau đó nắm bắt kết quả HAR trong Charlie_Har.Har" "" & nbsp; & nbsp; & nbsp; từ Selenium Nhập WebDriver & NBSP; & NBSP; & NBSP; từ selenium.webdriver.common.keys Chìa khóa nhập khẩu
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

& nbsp; & nbsp; & nbsp; từ máy chủ nhập khẩu browsermobproxy

server = server ('c: \ users \ sand \ desktop \\ browsermob-proxy-2.0-beta-8 \\ bin \\ browsermob-proxy') # máy chủ BMP được bắt đầu bởi browsermob-proxy.bat; Bạn sẽ cần sửa đổi dòng này để trỏ đến của bạn

   

server.start () # khởi tạo bmp & nbsp; & nbsp; & nbsp; proxy = server.create_proxy () # Tạo BM Proxy
    proxy = server.create_proxy() # Creates BM Proxy

Hồ sơ = WebDriver.FireFoxProfile () # 1/3: Mở trình duyệt Firefox và thiết lập cà vạt proxy giữa Selenium, BMP và trình duyệt Firefox của bạn & NBSP; & NBSP; & NBSP; hồ sơ.set_proxy (proxy.selenium_proxy ()) # 2/3: Mở trình duyệt Firefox và thiết lập liên kết proxy giữa Selenium, BMP và Trình duyệt Firefox của bạn & NBSP; & NBSP; & NBSP; Driver = WebDriver.firefox (firefox_profile = hồ sơ) # 3/3: Mở trình duyệt Firefox và thiết lập cà vạt proxy giữa Selenium, BMP và Trình duyệt Firefox của bạn
    profile.set_proxy(proxy.selenium_proxy()) # 2/3: Opens Firefox browser and establishes proxy tie between selenium, bmp, and your Firefox browser
    driver = webdriver.Firefox(firefox_profile=profile) # 3/3: Opens Firefox browser and establishes proxy tie between selenium, bmp, and your Firefox browser

& nbsp; & nbsp; & nbsp; trình điều khiển.set_window_size (1024, 768) # Đặt kích thước cửa sổ Trình duyệt FF

proxy.new_har ("matt_was_here") # tạo một mục har mới có tên matt_was_here trong charlie_har.har đầu ra & nbsp; & nbsp; & nbsp; Driver.get ('https://www.google.com/') # Nhận Google.com và tải trang.
    driver.get('https://www.google.com/') # Gets google.com and loads the page.

& nbsp; & nbsp; & nbsp; Element = driver.find_element_by_xpath ('//*[@id = "gbqfq"]') # định vị XPath được liên kết với hộp tìm kiếm Google.

Element.Send_Keys ('Cảm ơn Patrick đã cung cấp cho tất cả chúng tôi BMP') # Loại "Cảm ơn ..." trong hộp tìm kiếm của Google.

   

Element.Send_Keys (Keys.enter) # Nhấn phím "Enter" trong khi ở hộp tìm kiếm Google, do đó nhập các yêu cầu tìm kiếm và tải trang kết quả.

& nbsp; & nbsp; & nbsp; server.stop () # tắt bmp

Trả lời = proxy.har # Trả về một blob har json và gán nó cho biến "câu trả lời"

& nbsp; & nbsp; & nbsp; file = open ('Charlie_har.har', 'w+') # tạo một tệp mới có tên Charlie_har.har, nằm trong thư mục nơi tập lệnh được chạy từ & nbsp; & nbsp; & nbsp; file.write (câu trả lời) # viết cho Charlie_har.har, nối thêm biến "Trả lời" & nbsp; & nbsp; & nbsp; file.close () # lưu và đóng Charlie_har.har
    file.write(answer) # Writes to CHARLIE_HAR.har, appending the earlier variable "answer"
    file.close() # Saves and closes CHARLIE_HAR.har

Browsermobproxy là gì?

Browsermob Proxy là một công cụ nguồn mở được sử dụng để thu thập dữ liệu hiệu suất cho các ứng dụng web ở định dạng HAR.Nó cũng cho phép thao tác với hành vi và lưu lượng truy cập của trình duyệt, chẳng hạn như mô phỏng lưu lượng mạng, viết lại các yêu cầu và phản hồi HTTP, v.v.an open source tools which is used to capture performance data for a web applications in an HAR format. It also allows to manipulate browser behavior and traffic, such as simulating network traffic, rewriting HTTP requests and responses etc.

Làm thế nào để Python nắm bắt lưu lượng mạng?

Trong bài viết này, chúng tôi sẽ tìm hiểu cách loại bỏ dữ liệu trong lưu lượng mạng bằng Python ...
Các mô -đun cần thiết ..
Phương pháp 1: Sử dụng phương thức get_log () của selenium ..
Phương pháp 2: Sử dụng BrowsermobProxy để ghi tệp HAR từ tab mạng của trình duyệt ..

Làm thế nào để bạn cạo dữ liệu từ một mạng trong Python?

Để trích xuất dữ liệu bằng cách sử dụng máy quét web với Python, bạn cần làm theo các bước cơ bản sau:..
Tìm URL mà bạn muốn cạo ..
Kiểm tra trang ..
Tìm dữ liệu bạn muốn trích xuất ..
Viết mã ..
Chạy mã và trích xuất dữ liệu ..
Lưu trữ dữ liệu theo định dạng cần thiết ..