2010-08-20 24 views
13

Vì vậy, anh tôi muốn tôi viết trình thu thập dữ liệu web bằng Python (tự học) và tôi biết C++, Java và một chút html. Tôi đang sử dụng phiên bản 2.7 và đọc thư viện python, nhưng tôi có một vài vấn đề 1. httplib.HTTPConnectionrequest khái niệm với tôi là mới và tôi không hiểu nếu nó tải xuống một tập lệnh html như cookie hoặc một thể hiện. Nếu bạn làm cả hai, bạn có nhận được nguồn cho trang web không? Và một số từ mà tôi sẽ cần biết để sửa đổi trang và trả lại trang đã sửa đổi là gì.Trình thu thập dữ liệu web Python và "nhận" mã nguồn html

Chỉ cần cho nền, tôi cần phải tải về một trang và thay thế bất kỳ img với những người thân tôi có

Và nó sẽ được tốt đẹp nếu các bạn có thể cho tôi biết ý kiến ​​của bạn là 2,7 và 3,1

+0

Bạn đang sử dụng mô-đun hoặc thư viện Python nào? Cái này là gì vậy? –

+0

@David - Tôi đã sửa các đặc điểm của mình – danutenshu

Trả lời

37

Sử dụng Python 2.7, hiện có nhiều lib của bên thứ 3 hơn. (Chỉnh sửa: xem bên dưới).

Tôi khuyên bạn nên sử dụng mô-đun stdlib urllib2, nó sẽ cho phép bạn thoải mái nhận tài nguyên web. Ví dụ:

import urllib2 

response = urllib2.urlopen("http://google.de") 
page_source = response.read() 

Để phân tích mã, hãy xem BeautifulSoup.

BTW: chính xác những gì bạn muốn làm:

Chỉ cần cho nền, tôi cần phải tải về một trang và thay thế bất kỳ img với những người thân tôi có

Edit: Đó là năm 2014 bây giờ, hầu hết các thư viện quan trọng đã được chuyển, và bạn chắc chắn nên sử dụng Python 3 nếu bạn có thể. python-requests là thư viện cấp cao rất đẹp, dễ sử dụng hơn urllib2.

+0

chỉ để nitpick, những gì bạn nhận được từ 'urlopen' không phải là một' yêu cầu' đối tượng, đó là một đối tượng phản ứng. – aaronasterling

+0

Rất tiếc. Cảm ơn bạn. – leoluk

+0

như thể bạn thấy biểu trưng của google, thay thế bằng biểu tượng Mcdonalds.hoặc nếu bạn truy cập hình ảnh của google, bạn sẽ không thấy gì ngoài một hình ảnh nào đó do bạn chọn – danutenshu

0

Điều đầu tiên bạn cần làm là đọc số HTTP spec để giải thích những gì bạn có thể mong đợi nhận được qua dây. Dữ liệu được trả về bên trong nội dung sẽ là trang web "kết xuất", không phải là nguồn. Các nguồn có thể là một JSP, một servlet, một kịch bản CGI, trong ngắn hạn, chỉ là về bất cứ điều gì, và bạn không có quyền truy cập vào đó. Bạn chỉ nhận được HTML mà máy chủ đã gửi cho bạn. Trong trường hợp của một trang HTML tĩnh, sau đó có, bạn sẽ thấy "nguồn". Nhưng đối với bất cứ điều gì khác bạn thấy HTML được tạo ra, không phải là nguồn.

Khi bạn nói modify the page and return the modified page, ý của bạn là gì?

+0

cho tất cả các tệp img trên một trang nhất định, thay thế bằng một tệp mới – danutenshu

+0

như nếu bạn thấy biểu trưng của google, thay thế bằng biểu tượng Mcdonalds – danutenshu

+0

liên kết bạn gửi cho tôi rất lớn. Những gì tối thiểu tôi nên đọc – danutenshu

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