首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问隐藏的Tabs,用Python3.6进行Web抓取

问访问隐藏的Tabs,用Python3.6进行Web抓取
EN

Stack Overflow用户
提问于 2018-06-15 21:13:27
回答 2查看 1.8K关注 0票数 0

我在python3.6中使用bs4和urllib.request来进行网络抓取。我必须打开选项卡/能够切换一个“咏叹调扩展”在按钮标签,以访问我需要的div标签。

当选项卡关闭时,按钮选项卡如下所示,用<>代替-:

按钮id=“0手风琴-选项卡-0”type=“手风琴面板-标题u-填充-ver u-文本-左文本-l js-手风琴面板-标题”aria-控件=“0-手风琴-面板-0”咏叹调-扩展=“假”

打开时,aria展开=“true”,div选项卡出现在下面。

知道怎么做吗?

我会非常感激的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-16 14:30:08

从你的另一篇文章中我猜网址是https://www.sciencedirect.com/journal/construction-and-building-materials/issues

当您单击链接时,网页将从另一个URL加载JSON。您可以自己请求JSON,而无需单击链接。所有你需要知道的是ISBN,它永远不会改变(09500618)和一年,你可以通过一个范围。这甚至会从已经展开的选项卡返回数据。

代码语言:javascript
复制
import requests
import json

# The website rejects requests except from user agents it has not blacklisted so set a header
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0'
}

for i in range (1999, 2019):
    url = "https://www.sciencedirect.com/journal/09500618/year/" + str(i) + "/issues"
    r = requests.get(url, headers=headers)
    j = r.json()

    for d in j['data']:
        # Print the json object
        print (json.dumps(d, indent=4, sort_keys=True))
        # Or print specific values
        print (d['coverDateText'], d['volumeFirst'], d['uriLookup'], d['srctitle'])

产出:

代码语言:javascript
复制
{
    "cid": "271475",
    "contentFamily": "serial",
    "contentType": "JL",
    "coverDateStart": "19991201",
    "coverDateText": "1 December 1999",
    "hubStage": "H300",
    "issn": "09500618",
    "issueFirst": "8",
    "pages": [
        {
            "firstPage": "417",
            "lastPage": "470"
        }
    ],
    "pii": "S0950061800X00323",
    "sortField": "1999001300008zzzzzzz",
    "srctitle": "Construction and Building Materials",
    "uriLookup": "/vol/13/issue/8",
    "volIssueSupplementText": "Volume 13, Issue 8",
    "volumeFirst": "13"
}
1 December 1999 13 /vol/13/issue/8 Construction and Building Materials
...
票数 2
EN

Stack Overflow用户

发布于 2018-06-15 21:26:58

BeautifulSoup用于解析HTML/XML内容。你不能用它在网页上点击。

我建议您浏览一下文档,以确保它不只是将内容从一个地方移到另一个地方。如果单击按钮时通过AJAX加载内容,则必须使用类似于selenium的内容来触发单击。

一个更容易的选择是,当您单击按钮并在脚本中进行类似的调用时,检查从哪个url中获取内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50882732

复制
相关文章

相似问题

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