2014-04-16 30 views
22

Nếu tôi muốn xóa một trang web yêu cầu đăng nhập bằng mật khẩu trước tiên, làm cách nào tôi có thể bắt đầu tìm kiếm bằng python bằng thư viện beautifulsoup4? Dưới đây là những gì tôi làm cho các trang web không yêu cầu đăng nhập.Làm cách nào để xóa một trang web yêu cầu đăng nhập bằng python và beautifulsoup?

from bs4 import BeautifulSoup  
import urllib2 
url = urllib2.urlopen("http://www.python.org")  
content = url.read()  
soup = BeautifulSoup(content) 

Mã nên được thay đổi để phù hợp với thông tin đăng nhập như thế nào? Giả sử rằng trang web tôi muốn xóa là một diễn đàn yêu cầu đăng nhập. Một ví dụ là http://forum.arduino.cc/index.php

Trả lời

34

Bạn có thể sử dụng mechanize:

import mechanize 
from bs4 import BeautifulSoup 
import urllib2 
import cookielib 

cj = cookielib.CookieJar() 
br = mechanize.Browser() 
br.set_cookiejar(cj) 
br.open("https://id.arduino.cc/auth/login/") 

br.select_form(nr=0) 
br.form['username'] = 'username' 
br.form['password'] = 'password.' 
br.submit() 

print br.response().read() 

Hoặc urllib - Login to website using urllib2

+0

'br.form [' username '] =' username ' là' tên người dùng 'đầu tiên tên của biểu mẫu và tên người dùng thứ hai là tên người dùng thực? –

+3

@DanS. Điều này là khá muộn .. nhưng đối với bất cứ ai khác nhìn thấy điều này, có .. tên người dùng đầu tiên là tên trường mẫu .. và tên người dùng thứ hai sẽ là tên người dùng thực tế mà bạn muốn nhập vào trường biểu mẫu đó. –

1

Bạn có thể sử dụng selen để đăng nhập và lấy mã nguồn trang web, sau đó bạn có thể vượt qua để Beautiful Soup để trích xuất dữ liệu bạn muốn.

+4

Cân nhắc cung cấp thêm chi tiết trong câu trả lời của bạn. – Script47

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