使用python删除javascript查询生成的元素

使用python删除javascript查询生成的元素,javascript,python,html,web-scraping,Javascript,Python,Html,Web Scraping,我试图访问由javascript生成内容的元素中的文本。例如,从中获取twitter共享的数量 我已经尝试使用urllib和pyqt来获取页面的html,但是由于内容需要生成javascript,所以urllib/pyqt的响应中不存在其html。我目前正在使用selenium来完成这项任务,但是所花的时间比我希望的要长 是否可以在不打开浏览器页面的情况下访问此数据 这个问题在过去已经被问过了,但我发现的结果要么是,要么提供了一个链接,指向一个解决方案,该解决方案从那时起就一直在运行示例: im

我试图访问由javascript生成内容的元素中的文本。例如,从中获取twitter共享的数量

我已经尝试使用urllib和pyqt来获取页面的html,但是由于内容需要生成javascript,所以urllib/pyqt的响应中不存在其html。我目前正在使用selenium来完成这项任务,但是所花的时间比我希望的要长

是否可以在不打开浏览器页面的情况下访问此数据


这个问题在过去已经被问过了,但我发现的结果要么是,要么提供了一个链接,指向一个解决方案,该解决方案从那时起就一直在运行示例:

import urllib
import requests
import json

url = "https://daphnecaruanagalizia.com/2017/10/crook-schembri-court-today-pleading-not-crook/"

encoded = urllib.parse.quote_plus(url)
# encoded = urllib.quote_plus(url) # for python 2 replace previous line by this
j = requests.get('https://count-server.sharethis.com/v2.0/get_counts?url=%s' % encoded).text
obj = json.loads(j)
print(obj['clicks']['twitter'] + obj['shares']['twitter'])

# => 5008
说明:

import urllib
import requests
import json

url = "https://daphnecaruanagalizia.com/2017/10/crook-schembri-court-today-pleading-not-crook/"

encoded = urllib.parse.quote_plus(url)
# encoded = urllib.quote_plus(url) # for python 2 replace previous line by this
j = requests.get('https://count-server.sharethis.com/v2.0/get_counts?url=%s' % encoded).text
obj = json.loads(j)
print(obj['clicks']['twitter'] + obj['shares']['twitter'])

# => 5008
查看该网页时,您可以看到它对此进行了请求:

https://count-server.sharethis.com/v2.0/get_counts?url=https%3A%2F%2Fdaphnecaruanagalizia.com%2F2017%2F10%2Fcrook-schembri-court-today-pleading-not-crook%2F&cb=stButtons.processCB&wd=true
如果你把它粘贴到你的浏览器中,你会得到你所有的答案。然后对url进行一些处理,您可以看到删除额外的参数将为您提供一个漂亮的json


如您所见,您只需将请求的
url
参数替换为要获取twitter计数的页面的url。

启动Selenium web浏览器后,您可以执行类似于以下操作,然后将driver.page\u源传递到BeautifulSoup库(遗憾的是,无法在防火墙就位的情况下测试此功能):


Selenium通常是最好的选择。除非你能分离出获取数据的特定javascript请求。非常感谢。我可以确认这是有效的。你能给我一些关于你是如何找到请求的更多信息吗?我想做同样的事情,但对于评论的数量,即获得评论的数量。我是using chrome正在尝试通过网络选项卡查找请求。有什么技巧可以帮助识别所需的请求吗?你可以在“javascript”、“XHR”和“WS”上进行筛选。我只是打开了“response”选项卡,滚动请求,直到找到“twitter”关于评论的数量,你应该在上一页中检查disqusAlso:你可以看到每篇文章的评论数量,这不是javascript,所以很容易获得。检查
beautifulsou