2011-12-15 20 views
6

Tôi đang làm việc với mô-đun Cơ chế của Python. Tôi đã đi qua 3 địa điểm khác nhau mà không thể được mở bằng mechanize trực tiếp:Cơ chế Python sẽ không mở các trang này

  1. en.wikipedia.org/wiki/Dog (người dùng mới, không thể gửi hơn 2 liên kết TT)
  2. https://www.google.com/search?num=100&hl=en&site=&q=dog&oq=dog&aq=f&aqi=g10&aql=1&gs_sm=e&gs_upl=618l914l0l1027l3l2l0l0l0l0l173l173l0.1l1l0
  3. http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html

    import mechanize 
    br = mechanize.Browser() 
    br.set_handle_robots(False) 
    

Thêm đoạn mã sau cho phép cơ giới hóa để mở và phân tích các bài viết wikipedia và các kết quả tìm kiếm google s:

br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

Nhưng, cách giải quyết của tôi là không phù hợp cho trang web CPSC.gov - khi tôi cố gắng để mở nó với mechanize Browser, đóng băng python của tôi - đến mức tôi không thể thậm chí ngắt bàn phím nó .

Điều gì đang xảy ra ở đây?

Trả lời

14

Trong trường hợp trang web cpsc.gov, có vẻ như có tiêu đề refresh không được xử lý chính xác bằng cách cơ giới hóa HTTPRefreshProcessor. Tuy nhiên, bạn có thể khắc phục sự cố như sau:

import mechanize 

url = 'http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html' 
br = mechanize.Browser() 
br.set_handle_refresh(False) 
br.open(url) 
+0

Bạn là sếp! Tôi có thể hỏi bạn cách bạn biết câu trả lời cho câu hỏi của tôi không? –

+2

Tôi nhận thấy rằng có thể mở url bằng 'urllib2.urlopen' và với' mechanize.urlopen'. Sau đó, tôi so sánh các trình xử lý của mỗi trình mở ('urllib2._opener',' mechanize._opener' và 'mechanize.Browser()') và xem xét các dấu vết từ [HttpFox] (https://addons.mozilla.org/en-US/firefox/addon/httpfox /). Sau một vài lần thử, tôi thấy rằng việc xóa bộ xử lý làm mới là giải pháp đúng. – jcollado

+0

Tôn trọng. Cảm ơn một lần nữa :) –

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