如何解决如何使用函数内的机械化包登录网站?
我正在使用机械化功能登录一个网站,并用beautifulsoap对其进行刮擦。虽然不用功能就可以使用它,但是我不知道如何将登录功能放入功能中,然后再在主程序中使用它。到目前为止,这是我目前无法正常工作的代码:
#!/usr/bin/env python
import http.cookiejar as cookielib
import mechanize
from bs4 import BeautifulSoup
def set_browser():
br = mechanize.browser()
cookiejar = cookielib.LWPCookieJar()
br.set_cookiejar(cookiejar)
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(),max_time = 1)
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' )]
return br
def login(br):
br.open("https://example.com/login/index.PHP")
br.select_form(nr=0)
br.form['username'] = "admin"
br.form['password'] = "mypassword"
br.submit()
def scrape():
url = "https://example.com/content"
data = br.open(url).get_data()
soup = BeautifulSoup(data,'html.parser')
with open("source.html","w") as text_file:
print(soup.prettify(),file=text_file)
if __name__ == "__main__":
set_browser()
login(br)
scrape()
我希望有人能帮助我如何编写适当的功能。在上面的代码中,我编写了两个函数set_browser()和login(),但是拥有两个函数并不重要;它们分别是:如果将两者组合为一个,就可以了,我只是将其拆分为两个,以真正学习使用函数。
解决方法
我认为返回值时,您需要将其存储在某个地方,然后在下一个函数中使用它,因此它应该像这样
def login(br):
br.open("https://example.com/login/index.php")
br.select_form(nr=0)
br.form['username'] = "admin"
br.form['password'] = "mypassword"
br.submit()
if __name__ == "__main__":
br = set_browser()
login(br)
scrape()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。