首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录python抓取网站

登录python抓取网站
EN

Stack Overflow用户
提问于 2015-10-12 18:24:48
回答 1查看 2.5K关注 0票数 0

我需要从网站上获取遗传途径的链接。首先,我需要登录,但我遇到了麻烦。我对抓取的经验很少,所以任何关于这个的指针或一般的“如何做”的信息都将非常感谢以及一个确切的答案。

代码语言:javascript
复制
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

不幸的是,它似乎没有让我登录。我得到了:

代码语言:javascript
复制
'div', attrs={'id':'content_navs'}).find(
 AttributeError: 'NoneType' object has no attribute 'find'

如果我要求它在'content_navs‘目录之前打印链接,那么我会得到:

代码语言:javascript
复制
<div id="content_full">
<h1>Login to GSEA/MSigDB</h1>
<h2>Login</h2>
<a href="register.jsp"></a>Click here</div>

任何解决方案都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-10-12 18:41:20

您需要先登录http://www.broadinstitute.org/gsea/login.jsp,然后再转到其他位置。

第一步是创建一个session对象,它将持久化cookies和其他会话细节。接下来,您需要登录,最后将内容传递给BeautifulSoup:

代码语言:javascript
复制
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 code
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33078805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档