我在python3.6中使用bs4和urllib.request来进行网络抓取。我必须打开选项卡/能够切换一个“咏叹调扩展”在按钮标签,以访问我需要的div标签。
当选项卡关闭时,按钮选项卡如下所示,用<>代替-:
按钮id=“0手风琴-选项卡-0”type=“手风琴面板-标题u-填充-ver u-文本-左文本-l js-手风琴面板-标题”aria-控件=“0-手风琴-面板-0”咏叹调-扩展=“假”
打开时,aria展开=“true”,div选项卡出现在下面。
知道怎么做吗?
我会非常感激的。
发布于 2018-06-16 14:30:08
从你的另一篇文章中我猜网址是https://www.sciencedirect.com/journal/construction-and-building-materials/issues
当您单击链接时,网页将从另一个URL加载JSON。您可以自己请求JSON,而无需单击链接。所有你需要知道的是ISBN,它永远不会改变(09500618)和一年,你可以通过一个范围。这甚至会从已经展开的选项卡返回数据。
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'])产出:
{
"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
...发布于 2018-06-15 21:26:58
BeautifulSoup用于解析HTML/XML内容。你不能用它在网页上点击。
我建议您浏览一下文档,以确保它不只是将内容从一个地方移到另一个地方。如果单击按钮时通过AJAX加载内容,则必须使用类似于selenium的内容来触发单击。
一个更容易的选择是,当您单击按钮并在脚本中进行类似的调用时,检查从哪个url中获取内容。
https://stackoverflow.com/questions/50882732
复制相似问题