这是我到目前为止所拥有的
import urllib2
from ntlm import HTTPNtlmAuthHandler
from bs4 import BeautifulSoup
import requests
import os
import bleach
def stripAllTags( html ):
if html is None:
return None
return ''.join( BeautifulSoup( html ).findAll( text = True ) )
os.system('clear')
user = '<user>'
password = "<pass>"
url = "<some url>"
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password)
# create the NTLM authentication handler
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman)
# create and install the opener
opener = urllib2.build_opener(auth_NTLM)
urllib2.install_opener(opener)
data = urllib2.urlopen(url)
soup = BeautifulSoup(data)
table = soup.find('ul', {'class': 'dfwp-column dfwp-list'})
td = table.findAll('td')
tr = table.findAll('tr')
for td in table:
for tr in td:
clean = bleach.clean(tr, tags=[], strip=True)
print clean
如何将其正确转换为函数
table = soup.find('ul', {'class': 'dfwp-column dfwp-list'})
td = table.findAll('td')
tr = table.findAll('tr')
for td in table:
for tr in td:
clean = bleach.clean(tr, tags=[], strip=True)
print clean
我想在'for'中调用它
答案 0 :(得分:2)
好的,首先你已经在你的代码中创建了一个urllib2.opener然后你通过使用urllib2.urlopen()来调用网页.....所以你甚至不使用你的开启者或你通过的任何额外的项目创造的麻烦。此外,如果您的代码中指定了用户名和密码,我假设您将在某个时间点登录网站。如果是这样的话,那么你也会处于一个没有cookie处理的伤害世界。我已经重新组织了一些代码,并认为以下内容对您来说应该是一个很好的起点。
此外,这是执行您指定的操作的函数的演练......
它没有做它看起来的样子。
要避免这种情况....使用你指定的那些操作的新函数......
def myfunction(b):
"""param is a soup instance"""
table=b.find('ul', {'class':'dfwp-column dfwp-list'})
for td in table.findAll('td'):
for tr in td.findAll('tr'):
print bleach.clean(tr,tags=[], strip=True)
更少的代码....这样它就能找到正确的数据并正确迭代。像这样:
试图提供帮助...我已经清理并重新排序您的代码以消除一些浪费并添加已经提到的内容。现在试试这个:
from ntlm import HTTPNtlmAuthHandler
from bs4 import BeautifulSoup
import requests, os, bleach, urllib2, cookielib
user='XXX'
password='XXX'
url='URL'
cookies = cookielib.CookieJar()
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman))
pagedata=opener.open(url)
soup=BeautifulSoup(pagedata)