2014-07-04 15 views
9

Tôi đã thiết lập một kịch bản webscraping đơn giản trong Python w/Selenium và PhantomJS. Tôi có tổng cộng khoảng 200 URL để xóa. Các kịch bản chạy tốt lúc đầu tiên sau đó sau khoảng 20-30 URL (nó có thể được nhiều hơn/ít hơn vì nó có vẻ ngẫu nhiên khi nó không thành công và không liên quan đến bất kỳ URL cụ thể) Tôi nhận được lỗi sau trong python:Selenium không thể kết nối với GhostDriver (nhưng đôi khi chỉ)

selenium.common.exceptions.WebDriverException: Message: 'Can not connect to GhostDriver' 

và ghostdriver.log tôi:

PhantomJS is launching GhostDriver... 
[ERROR - 2014-07-04T17:27:37.519Z] GhostDriver - main.fail - {"message":"Could not start Ghost Driver","line":82,"sourceId":140692115795456,"sourceURL":":/ghostdriver/main.js","stack":"Error: Could not start Ghost Driver\n at :/ghostdriver/main.js:82","stackArray":[{"sourceURL":":/ghostdriver/main.js","line":82}]} 

tôi đã tìm kiếm và hầu hết các câu hỏi về SO dường như rằng họ thậm chí không thể chạy một URL duy nhất. Câu hỏi duy nhất tôi đã tìm thấy nơi xảy ra lỗi ở giữa tập lệnh là this one và câu trả lời là nâng cấp các phiên bản mới nhất lên phiên bản mới nhất mà tôi đã thực hiện. Câu trả lời khác chỉ đơn giản là nói để thử lại URL đó và dường như không phải là giải pháp tốt vì URL có thể lại không thành công nữa.

Tôi đang chạy phantomjs phiên bản 1.9.7 và selen phiên bản 2.42.1 trên Linux Mint 17 trên python 2.7.6

for url in ['example.com/1/', 'example.com/2/', 'example.com/3/', .. , ..]: 
    user_agent = 'Chrome' 
    dcap = dict(DesiredCapabilities.PHANTOMJS) 
    dcap['phantomjs.page.settings.userAgent'] = user_agent 
    driver = webdriver.PhantomJS(executable_path='/usr/bin/phantomjs', desired_capabilities=dcap) 
    driver.get(url) 
+1

'row.url' là gì? –

+0

@PadraicCunningham: Typo. Đã sửa. –

+1

bạn cài đặt phantomj như thế nào? –

Trả lời

8

tôi đã cùng một vấn đề để sửa chữa nó Tôi đã cài đặt phantomjs từ nguồn.

For Linux (Debian): 
sudo apt-get update 
sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev libxft-dev 
git clone git://github.com/ariya/phantomjs.git 
cd phantomjs 
git checkout 1.9 
./build.sh 

For Mac os: 
git clone git://github.com/ariya/phantomjs.git 
cd phantomjs 
git checkout 1.9 
./build.sh 

Đối với các hệ thống khác kiểm tra đường dẫn sau http://phantomjs.org/build.html

Optional : 
cd bin 
chmod +x phantomjs 
cp phantomjs /usr/bin/ 

I figured it out bởi vì khi tôi đọc tập tin ghostdriver.log của tôi nó nói.

[ERROR - 2014-09-04T19:33:30.842Z] GhostDriver - main.fail - {"message":"Could not start Ghost Driver","line":82,"sourceId":140145669488128,"sourceURL":":/ghostdriver/main.js","stack":"Error: Could not start Ghost Driver\n at :/ghostdriver/main.js:82","stackArray":[{"sourceURL":":/ghostdriver/main.js","line":82}]} 

Tôi chắc chắn rằng phải có một số tệp bị thiếu, nó phải được sử dụng cho một số trường hợp cạnh. Vì vậy, tôi quyết định xây dựng từ nguồn và làm việc tốt ngay bây giờ.

+1

Xây dựng Phantom cho OSX là nỗi đau trong ass. Nó yêu cầu QT libs. – Volatil3

Các vấn đề liên quan