我需要从网站上获取遗传途径的链接。首先,我需要登录,但我遇到了麻烦。我对抓取的经验很少,所以任何关于这个的指针或一般的“如何做”的信息都将非常感谢以及一个确切的答案。
import requests
from bs4 import BeautifulSoup
URL = 'http://www.broadinstitute.org/gsea/msigdb/genesets.jsp?collection=CP:BIOCARTA'
session1 = requests.Session()
params = {'login':'my_email'}
session2 = session1.post(URL, data=params)
pathways_links = []
for link in soup.find('div', attrs={'id':'wrapper'}).find(
'div', attrs={'id':'contentwrapper'}).find(
'div', attrs={'id':'content_navs'}).find(
'table', attrs={'id':'geneSetTable'}).find('a')['href']:
pathways_links.append(link)
print link不幸的是,它似乎没有让我登录。我得到了:
'div', attrs={'id':'content_navs'}).find(
AttributeError: 'NoneType' object has no attribute 'find'如果我要求它在'content_navs‘目录之前打印链接,那么我会得到:
<div id="content_full">
<h1>Login to GSEA/MSigDB</h1>
<h2>Login</h2>
<a href="register.jsp"></a>Click here</div>任何解决方案都将不胜感激。谢谢。
发布于 2015-10-12 18:41:20
您需要先登录http://www.broadinstitute.org/gsea/login.jsp,然后再转到其他位置。
第一步是创建一个session对象,它将持久化cookies和其他会话细节。接下来,您需要登录,最后将内容传递给BeautifulSoup:
s = requests.Session()
data = {'j_username': 'you@email.com'}
s.post('http://www.broadinstitute.org/gsea/login.jsp', data=data)
r = s.get('http://www.broadinstitute.org/gsea/msigdb/genesets.jsp?collection=CP:BIOCARTA')
soup = BeautifulSoup(r.content)
# the rest of your codehttps://stackoverflow.com/questions/33078805
复制相似问题