我正在使用机械化功能登录网站并用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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句