Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从存储在公共网站上的会议记录中删除对话_Javascript_Jsp_Web Scraping - Fatal编程技术网

Javascript 从存储在公共网站上的会议记录中删除对话

Javascript 从存储在公共网站上的会议记录中删除对话,javascript,jsp,web-scraping,Javascript,Jsp,Web Scraping,我目前正试图摘录我所在的地方议会进行的一系列讨论 我为每个记录的讨论提取了超过4000个唯一的URL。现在缺少的最后一步是为每个对话刮取元数据,并根据发言的人和正确的顺序分割文本 我的理想数据是: 第1行日期、头衔、发言人A的姓名、他说的话 第2行日期、头衔、B发言者的姓名、她说的话 我尝试过的: Webscraper.io是最有前途的。然而,它是随机排列的,因此我的发言都是杂乱无章的 iRobot和Import.io似乎无法识别Javascript Cloudscrape几乎没拿到,因为

我目前正试图摘录我所在的地方议会进行的一系列讨论

我为每个记录的讨论提取了超过4000个唯一的URL。现在缺少的最后一步是为每个对话刮取元数据,并根据发言的人和正确的顺序分割文本

我的理想数据是: 第1行日期、头衔、发言人A的姓名、他说的话 第2行日期、头衔、B发言者的姓名、她说的话

我尝试过的: Webscraper.io是最有前途的。然而,它是随机排列的,因此我的发言都是杂乱无章的

iRobot和Import.io似乎无法识别Javascript

Cloudscrape几乎没拿到,因为标签太乱了。对话以问题标签开始,前两个对话的回答标签。进一步的讨论都是使用topic标签追加的。(设计这个系统的人只想到了一个问题和一个答复)

背景: 我正在考虑将其解析回SQL,以便能够可视化数据并对其进行度量。我以前试过询问业主,但他们没有准备好原始数据。我已经窥视了数据的结构,与其访问凌乱的数据源,不如将其刮取下来


我曾尝试查看Beautifulsoup,但我仍然完全不知道该如何开始/它是否首先是正确的工具。

我不久前写了一个爬虫,这有点过火,因为它两次调用beautiful soup,但这是我能找到的唯一方法,从页面中提取所有可见文本

from bs4 import BeautifulSoup, Comment
import urllib
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re

def get_all_words(page): # gets all visible text on webpage
    soup = BeautifulSoup(page, "html.parser")
    for element in soup(text=lambda text: isinstance(text, Comment)):
        element.extract()
    soup = BeautifulSoup(str(soup), "html.parser")
    soup = soup.findAll(text=True)
    visible_texts = filter(visible, soup)
    words = []
    for x in visible_texts:
        for wrd in x.split():
            valid = re.match('^[\w-]+$', wrd) is not None
            if len(wrd) > 1 and valid:
                words.append(str(wrd.encode("UTF-8")))
    return words

def visible(element):
    if element.parent.name in ['style', 'script', '[document]', 'head', 'title','link',',','.',' | ']:
        return False
    return True

page = urllib.urlopen('http://www...').read()
print get_all_words(page) 

可能对你有一些用处

我不久前写了一个爬虫程序,这有点过分了,因为它两次调用beautiful soup,但这是我能找到的从页面中提取所有可见文本的唯一方法

from bs4 import BeautifulSoup, Comment
import urllib
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re

def get_all_words(page): # gets all visible text on webpage
    soup = BeautifulSoup(page, "html.parser")
    for element in soup(text=lambda text: isinstance(text, Comment)):
        element.extract()
    soup = BeautifulSoup(str(soup), "html.parser")
    soup = soup.findAll(text=True)
    visible_texts = filter(visible, soup)
    words = []
    for x in visible_texts:
        for wrd in x.split():
            valid = re.match('^[\w-]+$', wrd) is not None
            if len(wrd) > 1 and valid:
                words.append(str(wrd.encode("UTF-8")))
    return words

def visible(element):
    if element.parent.name in ['style', 'script', '[document]', 'head', 'title','link',',','.',' | ']:
        return False
    return True

page = urllib.urlopen('http://www...').read()
print get_all_words(page) 

可能会对您有所帮助

网站上的javascript加载时间太长,并且会使大多数数据提取平台的请求超时。很可能您必须使用JS呈现工具呈现页面,等待几秒钟,然后才提取所需的数据。如果您正试图大规模且定期地进行此操作,那么就处理和渲染成本而言,成本可能很快就会增加到相当可观的水平。不过祝你好运:)网站上的javascript加载时间太长,并且会使大多数数据提取平台的请求超时。很可能您必须使用JS呈现工具呈现页面,等待几秒钟,然后才提取所需的数据。如果您正试图大规模且定期地进行此操作,那么就处理和渲染成本而言,成本可能很快就会增加到相当可观的水平。祝你好运:)